Python文件的操做,需要用到File模块,File 对象使用 open 函数来创建,使用完成之后记得要用close进行关闭。
文件对象的获取
打开和关闭文件
- open()
- close()
有两种内建函数可以获取文件对象:open和file。他们的用法完全一样。下面只以open()为例子讲解。获取一个文件对象(打开文件)的语法如下:
1 2 3 |
fileObj = open(filename,access_mode='r',buffering=-1) .... fileObj.close() |
filename不用说你也应该知道是你要打开文件的路径。
access_mode用来标识文件打开的模式,默认为r(只读)。
常用的模式如下表所示:
文件模式 | 解释 |
---|---|
r | 以只读方式打开 |
w | 以写方式打开,文件不为空时清空文件;文件不存在时新建文件。 |
a | 追加模式,没有则创建 |
r+,w+,a+ | 以读写模式打开,参见w,a 另外还有一个b表示二进制模式访问,但是对于Linux或者unix系统来说这个模式没有任何意义,因为他们把所有文件都看作二进制文件,包括文本文件。 第三个参数不经常用到,标识访问文件的缓冲方式,0代表不缓冲,1代表缓 冲一行,-1代表使用系统默认缓冲方式。只要使用系统默认就好。 |
文件读取
file.read(size = -1)
读取从当前文件游标起size个字节的文件内容。如果size=-1,则读取所有剩余字节。
1 2 3 |
>>> f = open('/etc/passwd') >>> f.read(100) 'root:x:0:0:root:/root:/bin/bash\nbin:x:1:1:bin:/bin:/sbin/nologin\ndaemon:x:2:2:daemon:/sbin:/sbin/nol' |
file.readlines(size=-1)
从文件中读取并返回一行(包括行结束符),或返回最大size个字符
1 |
>>> f.readline() |
‘ogin\n’#和上面一个例子输出的最后拼起来就是 ‘nologin’,因为游标在l后面。
1 2 |
>>> f.readline(1) 'a' |
file.readlines(sizhint=0)
读取文件所有的行,并作为一个列表返回(包括行结束符),如果sizhint>0则返回总和大约sizhint字节的行(具体由缓冲区大小决定)。
1 2 |
f.readlines() ['dm:x:3:4:adm:/var/adm:/sbin/nologin\n', 'lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\n', 'sync:x:5:0:sync:/sbin:/bin/sync\n', 'shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\n', 'halt:x:7:0:halt:/sbin:/sbin/halt\n', 'mail:x:8:12:mail:/var/spool/mail:/sbin/nologin\n', ...... |
输出省略。
文件写入
file.write(str)
向文件中写入指定的字符串。
1 2 3 4 5 6 7 |
>>> f = file('/root/test.py','w+') >>> f.write("print 'hello,world'") >>> f.read() '' >>> f.close() >>> file('/root/test.py','r').read() "print 'hello,world'" |
file.write(seq)
向文件写入字符串序列seq。seq是任何返回字符串的可迭代对象。
1 2 3 4 5 6 |
>>> f = file('/root/test.py','a+') >>> codelst = ['\n','import os\n',"os.popen('ls').read()\n"] >>> f.writelines(codelst) >>> f.close() >>> file('/root/test.py','r').read() "print 'hello,world'\nimport os\nos.popen('ls').read()\n" |
注意,文件写入的时候,不会自动加上换行符,必须手动加上。
更多功能
关于File模块更多功能请参考:Python模块-File
未经允许不得转载:Python在线学习 » 【第十六节】Python文件操作