Python核心编程第九章笔记

文件内建函数[open()file()]

file_object= open(file_name, access_mode='r', buffering=-1)

file_name是包含要打开的文件名字的字符串,它可以是相对路径或者绝对路径

access_mode代表文件打开的模式.

buffering可选参数,用于指示访问文件所采用的缓冲方式.其中0表示不缓冲,1表示只缓冲一行数据,任何其它大于1的值代表使用给定值作为缓冲区大小.不提供该参数或者给定负值代表使用系统默认缓冲机制。


工厂函数file()

open()file()函数具有相同的功能,可以任意替换.所看到任何使用open()的地方,都可以使用file()替换它.建议使用open()来读写文件,在您想说明您在处理文件对象时使用file(),

ifinstance(f, file) .



输入

read()方法用来直接读取字节到字符串中,最多读取给定数目个字节.如果没有给定size

参数(默认值为-1)或者size值为负,文件将被读取直至末尾.


readline()方法读取打开文件的一行(读取下个行结束符之前的所有字节).然后整行,包括行

结束符,作为字符串返回.read()相同,它也有一个可选的size参数,默认为-1,代表读至

行结束符.如果提供了该参数,那么在超过size个字节后会返回不完整的行.


readlines()方法并不像其它两个输入方法一样返回一个字符串.它会读取所有(剩余的)行然

后把它们作为一个字符串列表返回.

输出

write()内建方法功能与read()readline()相反.它把含有文本数据或二进制数据块的字符串写入到文件中去.

readlines()一样,writelines()方法是针对列表的操作,它接受一个字符串列表作为参,将它们写入文件.行结束符并不会被自动加入,所以如果需要的话,你必须在调用writelines()前给每行结尾加上行结束符.

注意这里并没有"writeline()"方法,因为它等价于使用以行结束符结尾的单行字符串调用write()方法.



核心笔记:保留行分隔符

当使用输入方法如read()或者readlines()从文件中读取行时,Python并不会删除行结束.这个操作被留给了程序员.例如这样的代码在Python程序中很常见:

f= open('myFile', 'r')

data= [line.strip() for line in f.readlines()]

f.close()

类似地,输出方法write()writelines()也不会自动加入行结束符.你应该在向文件写入数据前自己完成。


文件内移动

seek()方法

0,1, 2分别对应着常量SEEK_SET,SEEK_CUR, 以及SEEK_END.

offset字节代表相对于某个位置偏移量.

一般使用下面用法

for  eachLine in f:

:

一般不再使用如下

for  eachLine in f.readline():

:




filename= raw_input('Enter file name: ')

fobj= open(filename, 'w')

whileTrue:

aLine= raw_input("Enter a line ('.' to quit): ")

if aLine != ".":

fobj.write('%s%s'% (aLine, os.linesep)

else:

break

fobj.close()

调用write()方 法 时必 须 加 上 换 行 符 。 而 且在 键 盘 上 很 难 输 入一 个EOF(end-of-file)字符,所以,程序使用句号(. )作为文件结束的标志,当用户输入句号后会自动结束输入并关闭文件.


tell()方法的使用

>>>f = open('/tmp/x', 'w+')

>>>f.tell()

0

>>>f.write('test line 1\n') #加入一个长为12的字符串[0-11]

>>>f.tell()

12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值