f.close() #关闭文件
为了方便,避免忘记close掉这个文件对象,可以用下面这种方式替代
with open('data.txt',"r") as f: #设置文件对象
str = f.read() #可以是随便对文件的操作
f = open("data.txt","r") #设置文件对象
str = f.read() #将txt文件的所有内容读入到字符串str中
f.close() #将文件关闭
f = open("data.txt","r") #设置文件对象
line = f.readline()
line = line[:-1]
while line: #直到读取完文件
line = f.readline() #读取一行文件,包括换行符
line = line[:-1] #去掉换行符,也可以不去
f.close() #关闭文件
data = []
for line in open("data.txt","r"): #设置文件对象并读取每一行文件
data.append(line) #将每一行文件加入到list中
f = open("data.txt","r") #设置文件对象
data = f.readlines() #直接将文件中按行读到list里,效果与方法2一样
f.close() #关闭文件
可以使用pandas的.read_csv,读取文件的时候可以给每一列起名字,通过列名来调取相应列的数据。
import pandas as pd
data = pd.read_csv(" OSDO1012.txt",sep=',',header=None, names=['lat','lon','time','z']
使用data.lat就可以读取名为lat这一列的数据
data = np.loadtxt("data.txt",skiprows = 1) #将文件中数据加载到data数组里,并且跳过第一行
with open('data.txt','w') as f: #设置文件对象
f.write(str) #将字符串写入文件中
data = ['a','b','c']
单层列表写入文件
with open("data.txt","w") as f:
f.writelines(data)
每一项用空格隔开,一个列表是一行写入文件
data =[ ['a','b','c'],['a','b','c'],['a','b','c']]
with open("data.txt","w") as f: #设置文件对象
for i in data: #对于双层列表中的数据
i = str(i).strip('[').strip(']').replace(',','').replace('\'','')+'\n' #将其中每一个列表规范化成字符串
f.write(i) #写入文件
直接将每一项都写入文件
data =[ ['a','b','c'],['a','b','c'],['a','b','c']]
with open("data.txt","w") as f: #设置文件对象
for i in data: #对于双层列表中的数据
f.writelines(i) #写入文件
np.savetxt("data.txt",data) #将数组中数据写入到data.txt文件
np.save("data.txt",data) #将数组中数据写入到data.txt文件
本文以txt 文本为例,只是介绍ANSI,Unicode,UTF-8 三种编码的文件的读写过程,对于编码不做深究了
一、用记事本另存为时,可以选择保存文本使用的的几种编码模式,分别为:
ANSI:默认保存的编码格式,采用本地操作系统默认的内码,简体中文一般为GB2312。
Unicode:UTF-16的小端字节序,加上BOM签名:0xFFFE。
Unicode bigendian:Unicode编码:UTF-16的大端字节序,加上BOM签名:0xFEFF。
UTF-8:编码格式是:UTF-8,其BOM为0xEF BB BF(UTF-8不区分字节序,这个BOM仅标志UTF-8编码)
Python对于读取的txt文件,最好在读取的时候进行decode成unicode编码,
def read_out(self): with codecs.open(self.filename, 'r+') as get: return get.read().decode('gbk')然后再写入的时候进行encode成对应想要的编码类型,这样可以保证源文件的编码方式不会改变,且中文不会乱码
整个代码过程保持使用unicode编码方式利用try…except 来进行编码判别具体使用了那种编码方式
f.write(self.filename.encode('gbk'))二、对于raw_input 通过键盘输入的文字,通过sys模块中的stdin.encodeing来进行解码
content = raw_input().decode(sys.stdin.encoding)type(content) 是unicode
暂时这么多
使用open方法打开一个txt文件,句柄保存在f中。注意第二个参数w,表明是可写模式,只有这种模式你才可以写入文字。第一个参数大家都知道,就是文件路径,如果文件不存在,那么会自动创建一个该目录下的txt文件。写入文字,用write
如果你一次有多行要写入,你可以用一个列表作为参数:
如果写入完毕,我们需要关闭文件,用到的close方法。
最后看一下,已经写入到tt记事本了。
open(path,'w'):w模式下,写入内容会覆盖掉原来的内容,所以我们还有另一个模式叫做追加模式,就是a模式