标签:
f = open(‘db‘,‘r‘) #只读
f = open(‘db‘,‘w‘) #只写,先清空原文件
f = open(‘db‘,‘x‘) #文件存在,报错,不存在,创建并只写
f = open(‘db‘,‘a‘) #追加
所有后边加b的,都是以字节的方式打开文件,不需要python帮助转换成字符串类型。如:ab、rb、wb、xb
f = open("db","ab")
#当以字节的方式打开时,往文件中写入的时候也要用写入字节,写字符串会报错。
f.write(bytes("坚持",encoding="utf-8"))
f.close()
"+"表示可以同时读写文件
r+, 读写【可读,可写】
w+, 写读【可读,可写】
x+ ,写读【可读,可写】
a+, 写读【可读,可写】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | f = open ( "db" , "r+" ,encoding = "utf-8" ) data = f.read() print (data) f.write( "111" ) f.close() #文件有一个指针,f.read读文件了,指针就会到最末尾。 #f.seek(1) 功能是主动把指针调到一个位置,f.seek(1),把指针跳到1的位置。写的时候会从指针 #开始往后覆盖,不是追加。 #python只要一读,再往里写内容时,会默认在最后追加。所以此时需要通过tell和seek来把指针移到当前位置 #seek的时候永远是以字节的方式找位置。即使有中文,如果f.seek(1),就会把中文给分开。 #如果打开模式无b,则f.read(1) 如果以字符串的方式打开,就会读取一个字符。 #print (f.tell()) 获取当前指针的位置。(字节) #f.seek(f.tell()) 调整当前指针的位置。(字节) #f.write("888") #当前指针位置开始向后覆盖 |
2、操作文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | read() #无参数,读全部;有参数: b:按字节 无b:按字符 tell() #获取当前指针位置 write() #写数据,b:字节; 无b,字符 close() fileno() #文件描述符 flush() #强刷,强制保存到硬盘。在文件close之前,写入的内容此时如果其他程序去读,是看不到的。如果使用f.flush(),就会强制把内容刷进去, #即使没有close,其他程序也可以看到文件中更新的内容了。 readline() #仅读取一行,不会出现文件巨大,把内存撑爆 truncate() #截断,执行truncate()后,指针后边的内容会全部删除,例: f = open ( "db" , "r+" ,encoding = "utf-8" ) f.seek( 3 ) f.truncate() f.close #for循环文件对象f = open(xxx) |
3、关闭文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | f.close() with open ( ‘db‘ , ‘r+‘ ,encoding = "utf-8" ) as f: pass #使用with open方式打开文件,当代码块执行完后,文件自动关闭。 #with打开多个文件 with open ( ‘db‘ ) as f1, open ( ‘db2‘ ) as f2: pass 示例:读取一个文件前十行,写入到另一个文件中 with open ( ‘db‘ , ‘r‘ ,encoding = ‘utf-8‘ ) as f1, open ( ‘db2‘ , ‘w‘ ,encoding = ‘utf-8‘ ) as f2: times = 0 for line in f1: time + = 1 if times < = 10 : f2.write(line) else : break |
标签:
原文地址:http://www.cnblogs.com/yangruizeng/p/5536668.html