文件
在我们读写一个文件之前需要打开文件
data=open(filename,mode)
- data是open()返回的文件对象
- filename是该文件的字符串名
- mode是文件类型和操作的字符串
mode第一个字母的文件类型:
- r:只读。这是默认模式
- r+:可读可写,不会创建不存在的文件,如果直接写文件,则从顶部开始写,覆盖之前此位置的内容
- w:只写,如果文件不存在则新建,如果已存在则覆盖内容
- w+:读写,如果文件不存在则新建,如果已存在则覆盖
- x:在文件不存在的情况下新建并写文件
mode第二个字母的文件类型:
- t:文本类型
- b:二进制文件
使用write()写文本文件
使用write写入:
In [66]: poems=‘白日依山尽,黄河入海流,日穷千里目,更上一层楼‘ #打印poems的字节大小 In [67]: len(poems) Out[67]: 23 #打开test.txt In [68]: fout=open(‘test.txt‘,‘wt‘) #将poems的内容写入 In [70]: fout.write(poems) Out[70]: 23 #函数 write() 返回写入文件的字节数 #关闭连接 In [71]: fout.close() In [72]: cat test.txt 白日依山尽,黄河入海流,日穷千里目,更上一层楼
使用print写入:
In [1]: poem="鹅鹅鹅,曲项向天歌,白毛浮绿水,红掌拨清波" In [2]: fout=open(‘test.txt‘,‘wt‘) In [3]: print(poem,file=fout) In [4]: fout.close() In [5]: cat test.txt 鹅鹅鹅,曲项向天歌,白毛浮绿水,红掌拨清波
- sep 分隔符:默认是一个空格 ‘ ‘
- end 结束字符:默认是一个换行符 ‘\n’
In [4]: fout=open(‘test.txt‘,‘w‘) In [5]: poem="加油,好好学习,天天向上" In [6]: print(poem,file=fout,sep=‘‘,end=‘‘) In [7]: cat test.txt In [8]: fout.close() In [9]: cat test.txt 加油,好好学习,天天向上
如果字符串非常大,可以将数据分块,直到所有字符被写入:
In [14]: poem Out[14]: ‘鹅鹅鹅,曲项向天歌,白毛湖绿水,红掌拨清波‘ In [15]: fout=open(‘libai.txt‘,‘w‘) In [16]: off=0 In [17]: chunk=10 In [18]: while True: ...: if off>size: ...: break ...: fout.write(poem[off:off+chunk]) ...: print(poem[off:off+chunk]) ...: off+=chunk ...: 鹅鹅鹅,曲项向天歌, 白毛湖绿水,红掌拨清 波 In [19]: fout.close()
如果 libai.txt 文件已经存在,使用模式 x 可以避免重写文件:
In [21]: fout=open(‘libai.txt‘,‘xt‘) --------------------------------------------------------------------------- FileExistsError Traceback (most recent call last) <ipython-input-21-2bb5519d7012> in <module>() ----> 1 fout=open(‘libai.txt‘,‘xt‘) FileExistsError: [Errno 17] File exists: ‘libai.txt‘
使用 read()、readline() 或者 readlines() 读取文本文件
使用不带参数的 read() 函数一次读入文件的所有内容。
In [22]: fin=open(‘libai.txt‘,‘rt‘) In [23]: poem1=fin.read() In [24]: poem1 Out[24]: ‘鹅鹅鹅,曲项向天歌,白毛湖绿水,红掌拨清波‘ In [25]: fin.close() In [26]: len(poem1) Out[26]: 21
函数 readlines() 调用时每次读取一行,并返回单行字符串的列表
In [28]: poem=‘‘‘鹅鹅鹅, ...: 曲项向天歌, ...: 白毛湖绿水, ...: 红掌拨清波。 ...: ‘‘‘ In [29]: fin=open(‘libai.txt‘,‘wt‘) #写入文件 In [30]: fin.write(poem) Out[30]: 26 In [31]: fin.close() In [32]: cat libai.txt 鹅鹅鹅, 曲项向天歌, 白毛湖绿水, 红掌拨清波。 In [33]: fin=open(‘libai.txt‘,‘rt‘) #读取文件 In [34]: lines=fin.readlines() In [35]: fin.close() In [36]: lines Out[36]: [‘鹅鹅鹅,\n‘, ‘曲项向天歌,\n‘, ‘白毛湖绿水,\n‘, ‘红掌拨清波。\n‘] In [37]: print(len(lines)) 4 In [41]: for line in lines: ...: print(line,end=‘‘) ...: 鹅鹅鹅, 曲项向天歌, 白毛湖绿水, 红掌拨清波。
时间: 2024-10-30 12:18:52