python:文件操作

对文件操作流程

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件 

打开文件的模式有:

  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a

"U"表示在读取时,可以将 自动转换成 (与 r 或 r+ 模式同使用)

  • rU
  • r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  • rb
  • wb
  • ab
#author wangzhaoyang
#f= open('test','r',encoding=('utf-8'))  #  r,w,a,r+.w+,a+
#f.read() #一次性读取所有
f= open('test1','a',encoding=('utf-8'))  #  r,w,a,r+.w+,a+
f.write(" 
this is test") #
f.close()

 循环字典

set_test = {"stu001":"wangzhaoyang","stu002":"ligang"}
for key in set_test:
    print(key,set_test[key])
for  k,v in set_test.items():
    print(k,v)

常用操作

f= open('test1','a',encoding=('utf-8'))  #  r,w,a,r+.w+,a+(追加读)
f.write(" 
this is test") #f.read()   读全部
f.close()  #关闭文件
f.readlines()#  列表,一次性全部读到内存中
f.readline()  #  一行一行的读,但是会把文件先读到到内存中

for line in f:  ###一行一行的读,效率最高,最常用的
    print(line)
print(f.tell())  ##打印指针位置
f.seek(0)   ##将文件指针移动到指定位置
print(f.encoding)  ##打印文件编码
print(f.name)  #打印文件,名字

f.flush()  #将文件刷新到硬盘上,强制刷到硬盘上
f.truncate(10)  #截断,截取十个字符

进度条

import   sys,time
for i in range(50):
    sys.stdout.write("#")
    sys.stdout.flush()
    time.sleep(0.2)

文件替换,打开两个文件

f = open("test","r",encoding=("utf-8"))
f_new=open("test1","w",encoding=("utf-8"))
for line in f:
    if "毁灭性的的那种"  in line:
        line=line.replace("毁灭性的的那种","wangzhaoyang123")
    f_new.write(line)
f.close()
f_new.close()

with语句

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

1
2
3
with open('log','r') as f:
     
    ...

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:

1
2
with open('log1') as obj1, open('log2') as obj2:
    pass
原文地址:https://www.cnblogs.com/wzy23/p/11426639.html