python文件,,文件是连续的字节序列


文件是连续的字节序列,数据的传输经常会用到字节流,无论字节流是由单个字节还是大块数据组成。文件对象不仅可以用来访问普通的磁盘文件,而且也可以访问任何其它类型抽象层面上的文件。

内建函数open()file()都可以用来打开文件,后者是python2.2加入的,统一了类型和类,file()就是个工厂函数,与open()有相同的功能。open()语法如下:

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

access_mode同C语言的文件访问模式,不过在python中,还提供了“U”,用以支持通用换行符UNS,os模块提供了处理行结束符的属性。

1、下面是文件操作相关的内建方法

read():直接读取字节到字符串中,最多读取给定数目个字节,如果没有给定size参数(默认为-1)或者size值为负,文件将被读取直至末尾。

readline():读取打开文件的一行,即读取下个行结束符之前的所有字节,包括行结束符,作为字符串返回,和read()相同,它也有一个可选的size参数。

readlines():读取所有剩余的行,然后把它们作为一个字符串列表返回,可选参数sizhint代表返回的最大字节大小,如果它大于0,因为需要凑齐缓冲区大小,那么返回的所有行字节大小可能稍微大于sizhint。xreadlines模块中的xreadlines对象可用来高效地迭代文件的行,但也不常用,因为使用迭代器或文件迭代就够了

readinto():已废弃,读取给定数目的字节到一个可写的缓冲器对象,和废弃的buffer()内建函数返回的对象是同个类型。

write():写文件,功能同read()。

writelines():写文件,功能同readlines()。

next():返回文件的下一行,或在没有其它行时引发StopIteration异常。

seek():在文件中移动文件指针到不同的位置,类似于C语言的fseek()。

text():返回当前文件指针在文件中的位置,是对seek()的补充。

close():关闭文件,结束对文件的访问。

fileno():返回打开文件的描述符,是一个整数。

flush():直接把内部缓冲区中的数据立刻写入文件,而不是被动地等待输出缓冲区被写入。

isatty():当文件是一个类tty设备时返回True。

truncate():将文件截取到当前文件指针位置或者到给定size,以字节为单位。

**注意:上面的读文件函数,不会删除行结束符,同样,写文件函数,也不会自动加入行结束符,这个需要我们自己完成。print语句默认在输出内容末尾后加一个换行符,而在语句后加一个逗号就可以避免这个行为。raw_input()不会保留用户输入的换行符。

2、行分隔符与路径分隔符

操作系统间的差异之一是它们所支持的行分隔符不同,另个不同是路径分隔符,当我们创建要跨几个平台的应用的时候,这些差异会让我们感觉非常麻烦。幸运的是,os模块帮我们解决了这些问题,os模块有五个很有用的属性,这些属性自动会被设置为正确的值。

linesep:用于在文件中分隔行的字符串(linux下为‘\n‘)。

sep:用来分隔文件路径名的字符串(linux下为‘/‘)。

pathsep:用于分隔文件路径的字符串(linux下为‘:‘)。

curdir:当前工作目录的字符串名称。

pardir:当前工作目录的父目录字符串名称。

3、文件内建属性

closed:True表示文件已经被关闭。

encoding:文件所使用的编码方式。

mode:文件打开时使用的访问模式。

name:文件名。

newlines:行结束符,可能为多个。

softspace:为0表示在输出一数据后,要加上一个空格符,1表示不加。

4、标准文件

类似与C语言,python有三个标准文件,即stdin、stdout、stderr,通过sys模块可访问这三个标准文件。print语句通常是输出到sys.stdout,raw_input()则从sys.stdin接受输入。

提到sys模块,sys.argv属性提供了对命令行参数的访问,类似与C语言main()函数的参数,另外getopt模块和optparse模块也可以处理命令行参数。

5、文件系统

针对不同的操作系统,python提供了对应的模块来访问其文件系统,那么在不同操作系统上访问文件系统是不是要导入不同的模块呢,实际上这是不必的,只需要导入os模块就好了,os模块就好像一个文件系统入口一样,会根据实际情况作出选择。os模块和os.path模块提供了常用的文件操作方法。

**tip:os.path.expanduser(‘~‘)提供了对波浪号的支持,用于获取用户目录,即$HOME。

6、相关模块

永久存储模块——

picklecPicklemarshal:存储转换。将比基本类型复杂的对象转换为一个二进制数据集合,这样就可以把数据集合保存起来或通过网络发送,然后再重新把数据集合恢复原来的对象格式,这个过程也被称为数据的扁平化。pickle模块常用的是dump()和load()函数,分别用来格式转换、对象取出。

dbhash/bsddbdbmgdbmdumbdbmayndbm:提供了python字符串的永久性储存。

shelve:兼具存储转换和永久性储存功能。

其它输入输出模块——

base64:提供二进制字符串和文本字符串间的编码/解码操作。

binascii:提供二进制和ASCII编码的二进制字符串间的编码/解码操作。

bz2:访问BZ2格式的压缩文件。

csv:访问csv文件,逗号分隔文件。

filecmp:用于比较目录和文件。

fileinput:提供多个文本文件的的行迭代器。

getopt/optparse:提供了命令行参数的解析处理。

glob/fnmatch:提供Unix样式的通配符匹配的功能。

gzip/zlib:读写gzip(GNU)文件,压缩需要zlib模块。

shutil:提供高级文件访问功能。

c/StringIO:对字符串对象提供类文件接口。

tarfile:读写TAR归档文件,支持压缩文件。

tmpfile:创建一个临时文件(名)。

uu:格式的编码和解码。

zipfile:用于读取ZIP归档文件的工具。


python文件

评论关闭