文本输入输出&上下文管理器(未完)

本文详细介绍了Python中文件的读写操作,包括不同模式的使用,如只读'r'、写入'w'等,并通过实例展示了如何在Python安装目录下及非安装目录下进行文本文件的操作。此外,还讲解了如何使用绝对路径读写文件,以及read、readline、readlines等方法的使用。

文本文件的读写主要通过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()           #读取所有行,储存在列表中,每个元素是一行。

 

转载于:https://www.cnblogs.com/shengyin/p/11268945.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值