文件操作

对文件操作流程

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件 
f=open("路径/文件",'r',encoding="utf-8") .read() 文件句柄.
从头开始读。读完后状态会停留在最后一行
read(5) 读5个字符

打开文件的模式有:

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

  • rU
  • r+U

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

  • rb
  • wb
  • ab
 
r:只读模式
r+:读写模式(新写的东西只能追加到最后一行)
w+:写读模式 创建一个新的文件再写入。再读取。(新写的东西只能追加到最后一行)
a+:追加读写。(新写的东西只能追加到最后一行)
rb:二进制格式读(网络传输情况下会用这种模式)
wb:二进制格式写(网络传输情况下会用这种模式)
w:只写模式,会覆盖之前所有内容
a:追加内容,不会盖之前所有内容
rU:在读取时,可以将\r\n自动转换成\n(与r或r+模式同使用)主要用于不同平台系统时自动适配。
f.write("增加的内容\n")
f.close() 关闭打开文件
f.readlines() 一行一行的读,模式为r。只适合读小文件。
for i in range(500):       读前500行
      print(f.readline())
 
for index,line in enumerate(f.readline()):    不打印第10行
      if index==9
           print(“--我是分割线------”)
           continue
     print(line.strip()) 打印并去掉空格
 
count=0
for line in f:
    if count==9
         print("--------")
         count+=1
         continue
    print(line.strip())
    count+=1
 
f.tell() 打印当前指针或光标的位置,按字符计数
f.seek() 指针或光标回到莫个位置,0是从头开始
f.encoding() 打印文件编码
f.fileno() 打印系统本身读文件的接口,是调系统读,不是python本身读
f.seekable() 判断文件光标或指针是否可以移动,结果true,false
f.xxxable()  判断文件xx(读,写)是否可以移动,结果true,false。xx代表读写或其他操作
f.flush() 强制刷新,将内存中的数据同步到硬盘
f.truncate() 不写参数,则会清空数据。如果参数是10.则截取10个字符(从头取)
 
打印进度条效果
import sys,time
for i in range(20)
sys.stdout.write("#")
  sys.stdout.flush()
  time.sleep(0.1)
 
文件修改:
思路:打开两个文件,使用循环读旧文件,然后使用判断旧文件需要修改的字符。再写入到新文件。
#!/usr/bin/env python
f=open('wenjian.txt','r',encoding='utf-8')
fnew=open('wenjian2.txt','w',encoding='utf-8')
 
for line in f:
    if '我是第9行' in line:
        line=line.replace('我是第9行','替换测试')
    fnew.write(line)
f.close()
fnew.close()
 
with语句:为了避免打开文件后忘记关闭,用with语句操作后悔自动关闭释放资源。
 
with open("wenjian.txt",'r',encoding='utf-8') as f,
       open("wenjian.txt",'r',encoding='utf-8') as f:      同时打开两个文件格式。分两行,官方建议一行不要超过80字符。
 
f=open("wenjian.txt",'r',encoding='utf-8')
两句效果一样,只是上面的操作后会自动关闭。
 
 
#!/usr/bin/env python
import sys
find_str = sys.argv[1]
replace_str = sys.argv[2]

with open('wenjian.txt','r',encoding='utf-8') as f,\
     open('wenjian2.txt','w',encoding='utf-8') as fnew:   as存放打开文件的变量名,自定义

    for line in f:
       if find_str in line:
             line=line.replace(find_str,replace_str)
       fnew.write(line)

 

 
 
posted @ 2017-03-27 11:46  玩蛇者  阅读(161)  评论(0编辑  收藏  举报