文本文件的读写主要通过open()所构建的文件对象来实现。
文本输入输出
f = open(文件名,模式)
最常用的模式有:
"r" # 只读
“w” # 写入
比如:f = open("test.txt","r")
一、文本文件在python安装目录下
我的python安装目录为:D:\Program Files(x86)\python
此目录下存放了record.txt文件。
我们可以直接打开该文件。
1 >>> a = open('record.txt') #安装目录下 2 >>> a.read() 3 'tom,12,86\nlee,15,99\nlucy,11,58\njoseph,19,56' 4 >>> a = open('record.txt','w') #写入 5 >>> a.write('tom,12,86') 6 >>> a = open('record.txt','r') #读取 7 >>> a.read() 8 'tom,12,86' 9 >>> a.close() #关闭
注意:
1.引用文件路径为单引号/双引号都可,不过文件路径名为字符串推荐使用单引号,个人更喜欢这种。
2.使用write修改文件,注意格式。并且write覆盖了原先文件内容。
3.空格的写法为\n。
二、文本文件未在python安装目录下
在之前的python中如何调用.py文件中我们写到未在python目录导入文件的语句,我们尝试在文本输入输出时使用该语句。
1 >>> sys.path 2 ['D:\\Program Files(x86)\\python\\Lib\\idlelib', 'D:\\Program Files(x86)\\python\\python27.zip',
'D:\\Program Files(x86)\\python\\DLLs', 'D:\\Program Files(x86)\\python\\lib', 'D:\\Program Files(x86)\\python\\lib\\plat-win',
'D:\\Program Files(x86)\\python\\lib\\lib-tk', 'D:\\Program Files(x86)\\python', 'D:\\Program Files(x86)\\python\\lib\\site-packages'] 3 >>> sys.path.append('D:\\Program Files(x86)\\python\\py') 4 >>> f = open('new3','r') #报错 5 6 Traceback (most recent call last): 7 File "<pyshell#37>", line 1, in <module> 8 f = open('new3','r') 9 IOError: [Errno 2] No such file or directory: 'new3' 10 >>> f = open('new3.py','r') #报错 11 12 Traceback (most recent call last): 13 File "<pyshell#38>", line 1, in <module> 14 f = open('new3.py','r') 15 IOError: [Errno 2] No such file or directory: 'new3.py' 16 >>> f = open('new3.txt','r') #报错 17 18 Traceback (most recent call last): 19 File "<pyshell#39>", line 1, in <module> 20 f = open('new3.txt','r') 21 IOError: [Errno 2] No such file or directory: 'new3.txt'
对比from 文件名 import * 之前的写法,在f = open(文件名,模式)中并不适用。
要想操作该文本,要使用文本的绝对路径,就是把目录写全。
1 f = open('D:\\Program Files(x86)\\python\\py\\new3.txt','r') #输出完整路径名 2 f.read() 3 'I like banana\xa3\xa1' 4 f = open('D:\\Program Files(x86)\\python\\py\\new3.txt','w') #写入模式 5 f.write('i like apple!') 6 f.close() #关闭 7 f = open('D:\\Program Files(x86)\\python\\py\\new3.py','r') #尝试.py文件 8 f.read() 9 'I like banana\xef\xbc\x81' 10 f = open('D:\\Program Files(x86)\\python\\py\\new3.py','w') #写入.py文件 11 f.write('i like apple!') 12 f.read() #直接读会报错 13 Traceback (most recent call last): 14 File "<pyshell#54>", line 1, in <module> 15 f.read() 16 IOError: File not open for reading 17 f.close() #关闭文件 18 f = open('D:\\Program Files(x86)\\python\\py\\new3.py','r') #读取文件查看 19 f.read() 20 'i like apple!'
我们看到,想要查看写入后的文件,需要先读取模式打开该文件再进行查看,直接使用f.read()会报错。
练习
建立一个record.txt的文档,写入内容如下:
tom, 12, 86 Lee, 15, 99 Lucy, 11, 58 Joseph, 19, 56
再从record.txt中读取文件并打印。
答题:
1 >>> f = open('D:\\Program Files(x86)\\python\\py\\record.txt','w') #直接新建record.txt文件,写入模式;读取模式报错 2 >>> f.write('tom,12,86\nlee,15,99\nlucy,11,58\njoseph,19,56') #写入文件内容 3 >>> f.close() #关闭文件,可不关闭直接读取 4 >>> f = open('D:\\Program Files(x86)\\python\\py\\record.txt','r') #重新打开 5 >>> f.read() #读取文件 6 'tom,12,86\nlee,15,99\nlucy,11,58\njoseph,19,56' 7 >>> f.close() #关闭文件 8 9 >>> f = open('D:\\Program Files(x86)\\python\\py\\record.txt') 10 >>> content = f.readline() #读取一行 11 >>> print (content) #输出结果 12 tom,12,86 13 14 >>> content = f.readlines() #读取全部 15 >>> print (content) 16 ['lee,15,99\n', 'lucy,11,58\n', 'joseph,19,56']
我们发现,
1.可以直接写入模式新建文件,直接用读取模式新建时会报错。
2.写入文件内容后,可以不关闭输入读取模式,不会报错。
3.读取一行与所有行的写法。
参考:
content = f.read(N) #读取N bytes的数据
content = f.readline() #读取一行
content = f.readlines() #读取所有行,储存在列表中,每个元素是一行。