文件对象
python中的文件操作和c语言比较类似,包括一些缓冲、偏移量的方式。
文件对象可以通过open()、file()两个内建方法创建,两个方法并没有什么不同,使用方法和c语言中的fopen()类似:
file_object = open(file_name, access_mode=‘r’, buffering=-1)
其中access_mode表示打开方式,r表示只读,w表示只写,r+,w+表示读写,a表示追加等;buffering表示缓冲方式,负值表示默认缓冲方式,0表示不缓冲,1表示行缓冲,大于1的值表示缓冲区的大小,一般情况下使用默认缓冲即可。
在perl中经常会用到管道的方式,通过open IN,”gunzip -cd $gzfile|” or die $!; 的方式轻松实现从压缩文件中读取内容,python中也可以通过os.popen()实现管道操作,注意的是,最后一层管道的|需要省略,因为popen()默认就是从管道中读取。
文件输入:
1. read()方法,指定读取一定个数的字节到字符串中,如果不指定字节或者为负值,则读取所有的内容;
2. readline()方法,读取一行内容,如果指定的参数size小于一行长度,则只返回 size个字节到字符串中;
3. readlines()方法,会读取所有的行并且返回一个字符串列表,可选参数代表返回的最大字节数,但是仍然需要凑齐缓冲区大小;
使用迭代器,并且配合for循环和readline()方法,是比较好的输入方式:
for line in file_object.readline():
print line
文件输出:
1. write()方法,像文件写入字符串
2. writelines()方法,将一个字符串列表写入到文件,或者是返回字符串的可迭代对象
文件偏移量:
1. tell()方法可以返回当前在文件中的位置
2. seek(offset, whence=0)方法,移动文件中的指针,whence=0表示从文件开始位置移动offset个偏移量,1表示从当前位置移动offset个偏移量,2表示从文件末尾移动offset个偏移量
内建方法:
file.close():关闭文件句柄,并且将缓冲区的内容写入到文件中
file.fileno():返回文件描述符;
file.flush():立即刷新文件缓冲区
内建属性:
file.name:文件名,file.mode:文件打开方式,file.encoding:文件编码方式,file.closed:文件是否被关闭等
标准输入输出错误流:
sys模块中可以通过sys.stdin,sys.stdout,sys.syderr访问标准输入输出错误流,内建方法raw_input()通常从sys.stdin接收输入
sys模块还可以通过sys.argv属性来访问环境参数,argv[0]为脚本本身
文件系统
在os模块中包含操作系统功能的主要接口,包括文件的相关操作:
os.getcwd():返回当前工作目录,os.listdir():列出指定目录下的相关文件(包括子目录),chdir():改变当前目录,symlink():创建符号链接,remove():删除文件,rename():重命名文件
os.path 模块中的路径相关操作:
os.path.basename:返回文件名,dirname():返回目录名,split():返回(dirname(),basename())元组,get*time():返回各种事件,getsize()返回文件大小,exists():指定路径是否存在,isdir():是否存在指定路径且为一个目录,isfile():指定目录是否存在且为一个文件等等
其他相关模块
bz2、csv、gzip/zlib、tarfile、zipfile等