python file operation
file.open(name[,mode[,buffering]])
模式的类型有:
r 默认只读
w 以写方式打开,如果文件不存在则会先创建,如果文件存在则先把文件内容清空(truncate the file first)
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)用seek也无用。打开的文件也是不能读的。
r+ 以读写模式打开,如果文件不存在则报错,文件可读可写,可写到文件的任何位置
w+ 以读写模式打开 (参见 w ),和r+不同的是,它会truncate the file first
a+ 以读写模式打开 (参见 a ),和r+不同的是,它只能写到文件末尾
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )
file.read([size]) size未指定则返回整个文件,如果文件大小>2倍内存则有问题.f.read()读到文件尾时返回""(空字串)
file.readline( ):表示逐行读取,返回字符串
file.readlines(): 读取所有行,返回字符串列表
file.readline([size]) 返回包含size行的列表,size 未指定则返回全部行
file.write() 接收字符串并且写入到文件中
file.writelines() 接收一个字符串列表作为参数,将他们写入到文件中,换行符不会自动的加入,因此,需要显式的加入换行符
file.tell() 返回一个整数,表示当前文件指针的位置
file.seek(偏移量,[起始位置])
用来移动文件指针
偏移量:单位:比特,可正可负
起始位置:
0-文件头,默认值
1-当前位置
2-文件尾
f.truncate() 清空文件
file.close() 关闭文件
for line in f: print line #通过迭代器访问
Data descriptors defined here:
closed
True if the file is closed
encoding
file encoding
errors
Unicode error handler
mode
file mode ('r', 'U', 'w', 'a', possibly with 'b' or '+' added)
name
file name
newlines
end-of-line convention used in this file
softspace
flag indicating that a space needs to be printed; used by print
>>> fo=open("test.txt","r") >>> fo.name 'test.txt' >>> fo.mode 'r' >>> fo.closed False >>> fo.encoding >>> fo.errors >>> fo.newlines >>> fo.softspace 0
# -*- coding:utf-8 -*- from sys import argv script,filename=argv txt=open(filename) print "Here's your file %r:" % filename print txt.read() print "Type the filename again:" file_again=raw_input(">>") txt_again=open(file_again) print txt_again.read() > python ex15.py ex15_sample.txt Here's your file 'ex15_sample.txt': This is stuff I typed into a file. It is really cool stuff. Lots and lots of fun to have in here. Type the filename again: >>1.txt test for sys.argv
>>> open("1.txt").read() 'test for sys.argv' >>> f=open("test.txt","w") >>> f.write("Hello \n") >>> f.write("python!") >>> f.close() >>> f=open("test.txt","r") >>> f.read() 'Hello \npython!' ##指针移动 >>> f=open("test.txt","r") >>> f.read(3) 'Hel' >>> f.read(3) 'lo ' >>> f.read(3) '\npy' >>> f.read(3) 'tho' >>> f.read(3) 'n!' >>> f.read(3) '' >>> f=open("test.txt","r") >>> f.readline() 'Hello \n' >>> f.readline() 'python!' >>> f.readline() ''
>>> f=open("test2.txt","w") >>> f.writelines(["first line","+\n","second line"]) >>> f.close() >>> f=open("test2.txt","r") >>> f.readline() 'first line+\n' >>> f.readline() 'second line' >>> f.readline() ''
>>> f=open("test.txt",'a+') >>> f.readline() 'dsadsa \n' >>> f=open("test.txt",'w+') >>> f.truncate() >>> f.close() >>> f=open("test.txt",'a+') >>> f.readline() ''
# -*-coding:utf-8 -*- from sys import argv from os.path import exists script,from_file,to_file =argv print "Copying from %s to %s" % (from_file,to_file) in_file=open(from_file) indata=in_file.read() print "The input file is %d bytes long" % len(indata) print "Does the output file exist? %r" % exists(to_file) print "Ready,hit RETURN to continue,CTRL-C to abort." raw_input(">>") out_file=open(to_file,"w") out_file.write(indata) print "Alright, all done." out_file.close() in_file.close() > python ex17.py test.txt test2.txt Copying from test.txt to test2.txt The input file is 14 bytes long Does the output file exist? False Ready,hit RETURN to continue,CTRL-C to abort. >> Alright, all done. > python Enthought Canopy Python 2.7.11 | 64-bit | (default, Jun 11 2016, 11:33:47) [MSC v.1500 64 bit Type "help", "copyright", "credits" or "license" for more information. >>> f=open("test2.txt") >>> f.read() 'dsads\naaa\nddd\n' >>>
>>> fo=open("test.txt","r") >>> fo.readline() 'dsads\n' >>> fo.tell() 7L >>> fo.seek(0,0) >>> fo.readline() 'dsads\n' >>> fo.tell() 7L >>> fo.seek(8,0) >>> fo.readline() 'aa\n' >>> fo.seek(7,0) >>> fo.readline() 'aaa\n' >>> fo.seek(0,2) >>> fo.tell() 17L >>> fo.seek(-8,2) >>> fo.tell() 9L >>> fo.read() 'a\nddd\n'