码迷,mamicode.com
首页 > 编程语言 > 详细

Python之----文件操作

时间:2017-10-09 22:34:24      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:new   并且   range   pytho   默认   remove   进制   硬盘   print   

文件操作:
读:
f = open("file1","r",encoding="utf-8")

f.read()------全部读,并且是字符串形式。
f.readline()--读第一行
f.readline()--读第二行
f.readlines()-全部读出来,并且是列表形式。
print(f.tell())--查看读取操作完了后,光标的位置
f.seek(0)-----将光标放到起始位置
f.close()
上述方法读取文件,都会把内容存到内存中,大文件的话,这样处理不行。所以以后不建议这么使用。
将文件打开后,一行一行的读取,内存中只存一行内容,方法如下:
for i in f:---此时的f,是一个迭代器?
print(i)
f.close()


写:
f = open("file2","w",encoding="utf-8")---‘w’会新建,如果有,也会覆盖掉
f.write("大傻子")
f.close()

f = open("file2","r+",encoding="utf-8")---读写模式,可以先读,再写,但是写只能写到最后

f = open("file2","w+",encoding="utf-8")---新建再读模式,就算把光标放到前面区,再写,也只能在最后。

f = open("file1","rb")---以二进制、读模式打开
f = open("file1","wb")---以二进制、写模式打开
f = open("file1","ab")---以二进制、追加模式打开

f.flush()-----默认是需要内存积攒到一定程度才开始往硬盘写,该命令使其强行刷新,写到硬盘,其到了实时的作用。
进度条:
import sys,time
for i in range(20):
sys.stdout.write("#")
sys.stdout.flush()
time.sleep(1)

修改:
思路:从old文件一行一行的读,读取一行,判断一行。一行一行的写到new文件。
f = open("file1","r",encoding="utf-8")
f_new = open("file1.bak","w",encoding="utf-8")
for line in f:
if "哈哈哈哈" in line:
line = line.replace("哈哈哈哈","我好牛逼")
f_new.write(line)
f.close()
f_new.close()
os.remove("info.txt")---------删除源文件
os.rename("info_new.txt","info.txt")------重命名回去

避免忘记close文件,可以采用如下办法,且可打开多个文件:
with open("file1","r",encoding="utf-8") as f,\
open("file1.bak","r",encoding="utf-8") as f2:
print(f.readlines())
print("-"*20)
print(f2.readlines())

 

Python之----文件操作

标签:new   并且   range   pytho   默认   remove   进制   硬盘   print   

原文地址:http://www.cnblogs.com/h2o2mno2h2/p/7642835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!