day2-5文件操作

文件操作:

打开文件的模式有:

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

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

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

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

  • rU
  • r+U

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

  • rb
  • wb
  • ab

 

with语句

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

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

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

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

with open('log1') as obj1, open('log2') as obj2:
    pass

 

f = open(r"G:\Python\1.txt","r+",encoding="gbk")
data = f.read()
print(data)
f.write("\n我爱北京天安门!\n")
f.write("天安门上太阳伞")
data = f.read()
print(data)
f = open(r"G:\Python\1.txt","a+",encoding="gbk")
#print(f.readline())
#打印前5行内容:
for i in range(5):
    print(f.readline())
print(f.readlines())
#不打印第十行内容
for index,line in enumerate(f.readlines()):
    if index == 9:
        print("")
        continue
    print(index,line.strip())   #strip将首尾的空格符去掉。index:显示下标
#高效率读数据 叠代:
for line in f:
    print(line)
#使用高效率方法不打印第十行
count = 0
for line in f:
    if count == 9:
        print("----我是第十行----")
        count +=1
    print(line.strip())
    count +=1
#f.encoding---显示当前使用的编码格式。
print(f.encoding)
#f.flush的作用。内容一个个输出
#实际案例:显示进度条。
import sys,time
for i in range (30):
    sys.stdout.write("#")
    time.sleep(0.1)
    sys.stdout.flush()
#f.truncate()----截断,这里只能将文件读写模式改为a才行,w:会清空文件,r:会显示没有写的权限。
#只能从头开始截断。
print(f.truncate(30))
#清空文件,文件只能是r+或a+,W也可以,w本身就是新建会清空内容的。
f.truncate()
#打印光标的位置
print(f.tell())
# f.seek()       #------定位指针位置:
nun_2 = f.tell()
print(nun_2)
print(f.readline())
print(f.readline())
print(f.tell())
f.seek(nun_2)
print(f.readline())
#f.closed判断文件是否关闭
f.close()    #关闭文件
print(f.closed)   #判断文件是否关闭

 

例:将文件中肆意的快乐等我享受,更换为  肆意的快乐等Alex去享受
  注意:文件中的内容必须为字符串
  文件中修改内容默认只能在文件最后添加,如果修改中间的内容,必须逐行读出来(转为字符串),然后将需要替换的内容更换(更换字符串),
然后将内容写入到新文件中。
 
f = open(r"g:\python\3.txt","r",encoding="gbk")
f_new = open(r"g:\python\4.txt","w",encoding="gbk")
for line in f:
    if "肆意的快乐等我享受" in line:
        line = line.replace("肆意的快乐等我享受","肆意的快乐等Alex去享受")
    f_new.write(line)
f_new.write(["zs","pass"])
f.close()
f_new.close()

 

posted on 2017-06-29 22:30  aptech2017  阅读(58)  评论(0)    收藏  举报

导航