-
Python入门笔记(15):对文件的操纵(1)
添加时间:2013-7-3 点击量:一、文件对象
我懂得的文件对象就是一个接口,经由过程这个接口对文件进行相干操纵。
《Python 核心编程》上说的很晦涩,这里没有深切懂得到,有人能申明给我听。
>>> f = open(demo.txt,r)
>>> f
<open file demo.txt, mode r at 0 x00CCCEC0>
>>> type(f)
<type file>二、相干函数
[1]、内建函数:open()
供给了初始化输入/输出(I/O)操纵的通用接口,成功打开一个文件后会返回一个文件对象,不然产生IOError异常。语法如下:
file_object = open(file_name,access_mode = r,buffering = -1)
解析如下:
1):file_name:默示要打开文件名字的字符串,可所以相对路径也可所以绝对路径。
如:我在D盘新建一个空白名为out的文本文件,然掉队行相干操纵。>>> f = open(../out.txt,w)
>>> f.write(good)
>>> f.close()则打开该文件后,发明good已经写入进去了。
接下来应用绝对路径进行接见,如下:
>>> f = open(D:/out.txt,r)
>>> f.read()
good
>>> f.close()2、可选变量access_mode也是字符串,代表文件打开模式。
重视:
1):应用r或U模式打开的文件必须已经存在
2):w模式打开的文件若存在则先清空,然后从头创建
3):a模式打开的文件是为了追加数据做筹办的,所有写入的数据将追加到文件末尾。若是文件不存在,则主动被创建。
4):+代表可读可写
5):b代表二进制模式接见
6):默认景象下是 r
3、buffering可选参数,用于指导接见文件所采取的缓存体式格式。0默示不缓存;1默示只缓存一行,n代表缓存n行。若是不供给或为负数,则代表应用体系默认的缓存机制。
用处?这个麻烦有人能告诉我!
封闭文件:
打开文件消费体系资料, 并且依附于文件模式, 其它法度或许不克不及接见它们。这就是一旦操纵完毕就该封闭文件的首要地点。
接上方的操纵,参加还没有封闭:
>>> f.closed #断定是否封闭
False
>>> f.close() #封闭办法
>>> f.closed
True
>>> f.tell() #若是已封闭,则一切针对文件操纵都无效
Traceback (most recent call last):
File <pyshell#27>, line 1, in <module>
f.tell()
ValueError: I/O operation on closed file
>>>
[2]、工厂函数file()
与open()一样,可彼此调换
>>> f = file(../out.txt,r)
>>> f.read()
good
>>> f.close()三、相干办法
返回一个文件对象后(句柄),其实我也不清楚到底什么是句柄,这里摘自百度百科:
句柄,是全部windows编程的根蒂根基。一个句柄是指应用的一个独一的整数值,即一个四字节长的数值,来标记应用法度中的不合对象和同类对象中的不合的实 例,诸如,一个窗口,按钮,图标,迁移转变条,输出设备,控件或者文件等。应用法度可以或许经由过程句柄接见响应的对象的信息,然则句柄不是一个指针,法度不克不及哄骗句柄来直接浏览文件中的信息。若是句柄不消在I/O文件中,它是毫无用处的。 句柄是windows用来标记应用法度中建树的或是应用的独一整数,windows应用了多量的句柄来标记很多对象。
一般与文件相干的办法无非是:输入、输出、文件内移动、杂项
[1]、输入
1、read():读取字节到字符串中,有可选参数size,默认是-1,若是为-1或复数则文件将会被读取到文件末尾。
>>> f.read()
good
>>> f.read(2)
go2、readline():读取文件的一行,包含行停止符。同read()也有个可选参数size。
3、readlines():读取所有(残剩的)然后将它们作为字符串列表返回,它有个可选参数sizhint代表返回的最大字大小。
>>> f = file(../out.txt,r)
>>> f.readlines()
[good][2]、输出
1、write():把含有文本数据或二进制数据块的字符串写入到文件中去。
2、writelines():针对列表操纵,接管一个字符串列表作为参数,将它们写入文件,行停止符并不会被主动参加,若是须要的话必须在调用writelines办法前给每一行结尾加上停止符。
>>> f = open(d:/out.txt,w)
>>> f.writelines([man])
>>> f.close()
>>> f = open(d:/out.txt,r)
>>> f.read()
man【重视:】
当应用read()或者readlines()从文件中读取行时,Python并不会删除行停止符,这个操纵留给了法度员。
>>> f.readlines()
[game is your life,game is your life,game is your life,game is your life,game is your life,[]\n, game is your life,game is your life,game is your life[]]
---------------------------
>>> f = open(demo.txt,r)
>>> data = [line.strip() for line in f.readlines()]
>>> data
[game is your life,game is your life,game is your life,game is your life,game is your life,[], game is your life,game is your life,game is your life[]]类似的,write()和writelines()也不会主动参加行停止符,应当本身添加。
>>> f = open(demo.txt,w)
>>> f.writelines([ my name is BeginMan\n,I like coding])
>>> f.close()打开该文件看:
[3]、文件内移动
tell()、seek()办法
f = open(d:/out.txt,rb)
print f.tell() #[1]
f.seek(10,1) #[2]
print f.tell() #10
print f.read(10) # BeginMan,
print f.read(18) #I like coding.
print f.tell() #38
【1】:tell():
tell 办法确认了已经移到当前文件地位
一个文件对象保护它所打开文件的状况。文件对象的 tell 办法告诉你在打开文件中的当前地位。
因为我们还没有对这个文件做任何事,当前地位为 0,它是文件的开端处。
【2】:seek():
文件对象的 seek 办法在打开文件中移动到另一个地位。第二个参数指出第一个参数是什么意思:
0 默示移动到一个绝对地位 (从文件开端算起),
1 默示移到一个相对地位 (从当前地位算起),
还有 2 默示文件末尾
[4]、文件迭代
>>> f = open(d:/out.txt,rb)
>>> for eachline in f:
eachline
my name is BeginMan,\r\n
I like coding.\r\n四、相干属性
file.closed:文件已被封闭,不然为False
file.mode:文件接见模式
file.name:文件名称
>>> f.mode
r
>>> f.name
demo.txt
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》