python 比较复杂的文件操作

Posted on 2019-06-20 00:33  S-skill  阅读(324)  评论(0)    收藏  举报
1文件操作
  1. r+(读写), w+(写读), a+(追加读), rb, wb, ab, (r+b, w+b, a+b)=> 一般不会用
  b: 输入输出的是字节, 处理非文本, 需要移动光标进行反复读写
  2. b bytes 读写操作的是字节, 用在非文本上
  3. seek() 移动光标到xx位置
  开头: seek(0), 末尾: seek(0,2)
  truncate(数字)截断: 删除后面的内容
  strip() 去掉空格, 还能去掉\n和\t
  4. 文件修改
  创建新文件, 把修改的内容写入新文件, 删除老文件, 重命名新文件
  import os
  os.remove("")删除文件
  os.rename("原文件", "新文件名") 重命名文件


1 . r+(读写)文件操作
注意: 首先要写一个文件,才能进行下面操作
注意: 这里有一个坑
# 1,在没有进行任何操作之前进行写, 在开头写 # 2. 如果读取了一些内容, 在写, 写入的是最后 f = open("practice", mode="r+",encoding='utf-8') # r+模式, 默认情况下光标在文件的开头, 必须先读, 后写 s = f.read() print(s) # 不管你前面读了几个, 后面去写都是在末尾 f.write("哈哈") f.flush() f.close() f = open("practice", mode="r+",encoding='utf-8') f.write("呵呵") # 先写后读(写在开头) f.seek(0) # 光标设置在开头,可以让你从前面开始读 s = f.read() print(s) f.flush() # 刷新 f.close() # seek() 移动光标到XX位置 f = open("practice", mode="r+",encoding='utf-8') s = f.read(3) # 读三个 f.seek(9) # 设置seek里面每设置数字3,读的时候,就从开头向后移动一个字, # 就是从第二个字开始读,每次加3,就像后面移动一个字 # 是byte 9个字节, 一个字,所以移动3个字 print(s) print(f.read()) # 再次读,按照光标读的,向右移动三个字在读

 

2. w+(写读)文件操作

f = open("practice", mode="w+", encoding="utf-8")
# w+操作, 会清空原来的内容.  w+一般是不用
f.write("今天天气")
f.seek(3)   # 移动光标
s = f.read()
print(s)
f.flush()   # 刷新
f.close()

 

3. a+(追加读)文件操作

f = open("good", mode="a+", encoding="utf-8")
f.write('very good')
f.seek(0)   # 这里要设置光标,才能读出来,意思是在开头读(不然读不出来)
s = f.read()
print(s)

 

4. rb - 文件操作

f = open("good", mode="rb")  # 读取的内容直接就是字节
bs = f.read()
print(bs)
# 把字节解码成熟悉的字
print(bs.decode("utf-8"))   # 需要解码
f.close()

 

5. wb - 文件操作

# w, r, a == wb, rb, ab
# b: 处理的是非文本
f = open("good", mode="wb")     # 清除文件里面的内容,在写
f.write("hello".encode("utf-8"))  # 进行编码 返回到文本的时候就还原
f.close()
# 一般不会用

 

6. ab - 文件操作

# 一般不会用
f = open("good", mode="ab")  # ab(追加)
f.write("你好啊".encode("utf-8"))  # 进行编码 返回到文本的时候就变成文字
f.close()

 

7. truncate() 截断

fo = open("good", "r+", encoding="utf-8")
fo.seek(30)
fo.truncate()  # 从第30个字节以后的内容全部删除了
fo.seek(0)
line = fo.readlines()
print(line)
fo.truncate(9)      # 删除9个字节以后的内容
fo.seek(0)
ss = fo.read()
print(ss)
fo.close()

 

8. 文件修改

import os
# 方法一:
with open("demo", mode="r", encoding="utf-8") as f1, \
        open("demo1", mode="w", encoding="utf-8") as f2:
    s = f1.read()
    ss = s.replace('','')
    f2.write(ss)

os.remove("demo")  # 删除文件
os.rename("demo1", "demo")  # 重命名文件


# 方法二:
with open("demo", mode="r", encoding="utf-8") as f1, \
        open("demo1", mode="w", encoding="utf-8") as f2:
    for line in f1:     
        s = line.replace("", "")
        f2.write(s)
os.remove("demo")  # 删除文件
os.rename("demo1", "demo")  # 重命名文件

 

9. strip()去掉头和尾的空格, 还能去掉\n和\t

p = '\t你好啊'
print(p)
print(p.strip())
# 输出:
#     你好啊
# 你好啊


p1 = '\n可以啊'
print(p1)
print(p1.strip())
# 输出:
#   
# 可以啊
# 可以啊

p = ' 不会'
print(p)
print(p.strip())
# 输出
#  不会
# 不会

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3