因為文件格式模塊不能解析該文件,190328文件處理

 2023-12-25 阅读 25 评论 0

摘要:一、文件處理初識 打開文件,得到文件句柄并賦值給一個變量通過文件句柄對文件進行操作關閉文件 文本示例漢皇重色思傾國,御宇多年求不得。 楊家有女初長成,養在深閨人未識。 天生麗質難自棄,一朝選在君王側。 回眸一笑百媚生,六宮粉黛無顏

一、文件處理初識

  1. 打開文件,得到文件句柄并賦值給一個變量
  2. 通過文件句柄對文件進行操作
  3. 關閉文件
  • 文本示例
漢皇重色思傾國,御宇多年求不得。
楊家有女初長成,養在深閨人未識。
天生麗質難自棄,一朝選在君王側。
回眸一笑百媚生,六宮粉黛無顏色。
春寒賜浴華清池,溫泉水滑洗凝脂。
侍兒扶起嬌無力,始是新承恩澤時。
  • 基本操作
f = open("長恨歌", 'r', encoding="utf-8")  # open函數會使用當前系統的編碼打開
data = f.read()
print(data)
f.close()

二、基本文件處理

  • 讀模式:r
f = open("長恨歌",'r', encoding="utf-8")  # open函數會使用當前系統的編碼打開print(f.read())  #讀取全部,按字符讀
print(f.readable())  #判斷文件是否可讀  True
print(f.readline(), end='')  #讀一行,end='' 換行符
print(f.readline())  #楊家有女初長成,養在深閨人未識。
print(f.readlines())  #將所有行讀處理放到列表中f.close()
  • 寫模式:w
  1. 只有字符串才能寫到文件中
f = open("dongfei_file", 'w', encoding="utf-8")f.write("漢皇重色思傾國,御宇多年求不得。\n")
f.write("楊家有女初長成,養在深閨人未識。\n")
print(f.writable())  #判斷文件是否可寫  True
f.writelines(["天生麗質難自棄,一朝選在君王側。\n", "回眸一笑百媚生,六宮粉黛無顏色。\n"])  #將列表中的元素寫到文件中f.close()
  • 追加模式:a
f = open("dongfei_file", 'a', encoding="utf-8")f.write("春寒賜浴華清池,溫泉水滑洗凝脂。")  #寫到文件最后f.close()
  • 讀寫模式:r+
  • 寫讀模式:w+,x+,a+

  • 模擬修改文件,硬盤上的文件是無法修改的

f = open("dongfei_file", 'r', encoding="utf-8")
data = f.readlines()
f.close()f2 = open("new_dongfei_file", 'w', encoding="utf-8")
f2.writelines(data[0])  #文件的處理邏輯
f2.close()
  • 自動關閉文件
with open("a.txt", "r", encoding="utf-8") as src_f, \open("new_a.txt", "w", encoding="utf-8") as des_f:data = src_f.readline()des_f.write(data)print(data)
  • 二進制讀:rb
with open("a.txt", "rb") as f:data = f.read()print(data)print(data.decode())
  • 二進制寫:wb
with open("b.txt", "wb") as f:f.write(bytes("dongfei 你好\n", encoding="utf-8"))f.write("dongfei2 你好".encode("utf-8"))f.write(b"dongfei3\n")  #這樣方法不能寫中文
  • 二進制追加:ab
  • 文本模式:t
  • 二進制模式:b,二進制模式可以跨平臺

  • 其他方法:

f = open("c.txt", "w", encoding="utf-8")
print(f.closed)  #判斷文件是否是關閉的
print(f.encoding)  #打印文件打開的編碼
f.flush()  #將內存中修改的數據保存至硬盤
print(f.tell())  #光標當前所在位置
f.seek(0)  #控制光標的移動,按字節移動
f.truncate()  #截取
  • 光標操作
#絕對位置seek
with open("dongfei_file", "r", encoding="utf-8") as f:print(f.tell())  #0f.seek(10)print(f.tell())  #10f.seek(3)print(f.tell())  #3,默認從文件開頭seek#相對位置seek
with open("dongfei_file", "rb") as f:print(f.tell())  #0f.seek(10,1)print(f.tell())  #10f.seek(3,1)print(f.tell())  #13 ,以相對位置seek#倒敘位置seek
with open("dongfei_file", "rb") as f:print(f.tell())  #0f.seek(-10,2)  #倒敘seek,-10是往回移動print(f.tell())f.seek(-3,2)print(f.tell())  #以相對位置seek
  • 讀出文件的最后一行
with open("dongfei_file", "rb") as f:for i in f:offs = -10while True:f.seek(offs,2)data = f.readlines()if len(data) > 1:print("文件的最后一行:",data[-1].decode("utf-8"))breakoffs *= 2

轉載于:https://www.cnblogs.com/L-dongf/p/10623504.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/194889.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息