1. 读取一个文本文件,可以用下述方式:
myfile=open(r'abc.txt') x=myfile.read() print(x)
也可以用下述方式:
with open('abc.txt') as f: for line in f: print(line.strip())
with的作用是让Python自动在文件操作完毕后关闭文件。也可以用close()主动关闭。strip的作用是去除读取产生的空行。
2. 写文件
下面代码在文件末尾追加写入:
with open('abc.txt') as f: for line in f: print(line.strip())其中参数'a'表示append,追加;如果改为'w',则变为写入(覆盖),无此文件时则创建。其他还有'r+', 'w+', 'rb', 'wb'等,对应于读写、写读、二进制读,二进制写。
其中,文件路径尽量不要出现中文;直接写文件名abc.txt或xxxx/abc.txt表示在程序目录中或其子目录xxx中打开文件。也可写上绝对路径,一般用斜杠即可,用反斜杠时因为反斜杠有时用于转义,所以会出现意外结果,如文件名以n开头,\n就成了换行的意思了。也可以在字符串前加r表示使用原生字符串,如r'abc.txt'。
3. 读写二进制文件
Python提供了一个标准模块pickle用以存取任意对象,很实用,例如:
myfile=open('abc.bin','wb') myfile.write(b'abcd\nefg') myfile.close() myfile=open('abc.bin','r') x=myfile.read() print(x) #分两行打印出abcd和efg myfile.close() myfile=open('abc.bin','rb') x=myfile.read() print(x) #打印出b'abcd\nefg' myfile.close()
4. 文件序列化(二进制)
users=[] users.append({'id':'richard','pwd':'abc'}) users.append({'id':'vivian','pwd':'bac'}) users.append({'id':'david','pwd':'cab'}) print('这是输入的数据:\n',users) myfile=open('mydata.bin','wb') import pickle pickle.dump(users,myfile) myfile.close() print('数据已经写入文件。') myfile=open('mydata.bin','rb') x=pickle.load(myfile) print('这是从文件中读出的数据:\n',x)