Python-21 文件

文件

使用open()函数,打开文件并返回文件对象。可以使用 help(open),来查看open函数的说明。

>>> help(open)
Help on built-in function open in module io:

open(...)
    open(file, mode='r', buffering=-1, encoding=None,
         errors=None, newline=None, closefd=True, opener=None) -> file object


关于文件打开模式参数的说明

   打开模式                                  执行操作                             
'r'以只读方式打开文件(默认)
'w'
以写入的方式打开文件,会覆盖已存在的文件件    
'x'
如果文件已经存在,使用此模式打开将引发异常
'a
以写入模式打开,如果文件存在,则在末尾追加写入     
'b'
以二进制模式打开文件
't'
以文本模式打开(默认)
'+'
可读写模式(可添加到其他模式中使用)
'U'
通用换行符支持


>>> f = open('E:\\record.txt')
>>> f
<_io.TextIOWrapper name='E:\\record.txt' mode='r' encoding='cp936'>
>>> 


文件对象方法

   文件对象方法           执行操作        
f.close()关闭文件
f.read([size=-1])从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的
所有字符,然后作为字符串返回
f.readline([size=-1])   

从文件中读取并返回一行(包括行结束符),果有size有定义则返回size个字符

f.write(str)将字符串str写入文件
f.writelines(seq)向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
f.seek(offset,from)在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
f.tell()返回当前在文件中的位置
f.truncate([size=file.tell()])          截取文件到size个字节,默认是截取到文件指针当前位置

>>> f = open("E:\\record.txt")
>>> f
<_io.TextIOWrapper name='E:\\record.txt' mode='r' encoding='cp936'>
>>> f.read()
'我常想在纷扰中寻出一点闲静来,然而委实不容易。目前是这么离奇,心里是这么芜杂。\n一个人做到只剩了回忆的时候,生涯大概总要算是无聊了罢,但有时竟会连回忆也没有。\n中国的做文章有轨范,世事也仍然是螺旋。\n前几天我离开中山大学的时候,便想起四个月以前的离开厦门大学;\n听到飞机在头上鸣叫,竟记得了一年前在北京城上日日旋绕的飞机。\n我那时还做了一篇短文,叫做《一觉》。现在是,连这“一觉”也没有了。'
>>> 

再读的话,只是一个空字符串,说明已经指向了文件的末尾。

>>> f.read()
''
>>> 

文件指针

>>> f = open("E:\\record.txt")
>>> f.read(5)
'我常想在纷'
>>> f.tell()
10
>>> 

>>> f.seek(20,0)
20
>>> f.readline()
'点闲静来,然而委实不容易。目前是这么离奇,心里是这么芜杂。\n'
>>> 


list(f) 直接转为列表
>>> list(f)
['一个人做到只剩了回忆的时候,生涯大概总要算是无聊了罢,但有时竟会连回忆也没有。\n', '中国的做文章有轨范,世事也仍然是螺旋。\n', '前几天我离开中山大学的时候,便想起四个月以前的离开厦门大学;\n', '听到飞机在头上鸣叫,竟记得了一年前在北京城上日日旋绕的飞机。\n', '我那时还做了一篇短文,叫做《一觉》。现在是,连这“一觉”也没有了。']
>>> 

迭代读取文本中的每一行,但这样的效率不高

>>> line = list(f)
>>> for each_line in line:
	print(each_line)

	
我常想在纷扰中寻出一点闲静来,然而委实不容易。目前是这么离奇,心里是这么芜杂。

一个人做到只剩了回忆的时候,生涯大概总要算是无聊了罢,但有时竟会连回忆也没有。

中国的做文章有轨范,世事也仍然是螺旋。

前几天我离开中山大学的时候,便想起四个月以前的离开厦门大学;

听到飞机在头上鸣叫,竟记得了一年前在北京城上日日旋绕的飞机。

我那时还做了一篇短文,叫做《一觉》。现在是,连这“一觉”也没有了。
>>> 


可以直接迭代f,Python是不是很灵活!!!,这样效率会比较高,也是官方文档推荐的方式

>>> f.seek(0,0)
0
>>> for each_line in f:
	print(each_line)

	
我常想在纷扰中寻出一点闲静来,然而委实不容易。目前是这么离奇,心里是这么芜杂。

一个人做到只剩了回忆的时候,生涯大概总要算是无聊了罢,但有时竟会连回忆也没有。

中国的做文章有轨范,世事也仍然是螺旋。

前几天我离开中山大学的时候,便想起四个月以前的离开厦门大学;

听到飞机在头上鸣叫,竟记得了一年前在北京城上日日旋绕的飞机。

我那时还做了一篇短文,叫做《一觉》。现在是,连这“一觉”也没有了。
>>> 

文件的写入

写入文件,要确保打开文件的参数中带有‘w’或‘a’

现在试图用之前的f来写入字符,出现io异常,不是可写的状态

>>> f.write('china')
Traceback (most recent call last):
  File "<pyshell#25>", line 1, in <module>
    f.write('china')
io.UnsupportedOperation: not writable
>>> 

现在以‘w’的方式,打开一个不存在的文件,会自动创建一个对应的文件

>>> f = open('E:\\test.txt','w')
>>> f.write('shenzhen')
8
>>> 
返回写入字符数。

>>> f.close()
>>> 
写完之后,要有close(),才会写入文件中。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值