網站首頁 編程語言 正文
在python中使用open函數對文件進行處理。
1.open()
python打開文件使用open()函數,返回一個指向文件的指針。該函數常用以下三個參數。
1.1 參數1
目標文件的路徑+名字。最好使用r"路徑"這種原始字符串寫法,防止有轉義字符影響實際路徑。
1.2 參數2
操作文件的方式mode=‘方式’。mode=可以省略。下面對操作文件的方式進行詳細說明:
(1)r
以只讀方式打開文件。文件的指針將會放在文件的開頭。這是open默認模式。如果文件不存在,會報錯。
(2)rb
以二進制只讀方式打開一個文件。文件指針將會放在文件的開頭。注意這種方式不能使用encoding,不然會報錯。
同樣的內容使用一般方式和二進制的方式打開。
fp = open(r"E:\test.txt",'r',encoding='utf-8')
content = fp.readline()
print(content)
輸出:加油,好好干!
fp = open(r"E:\test.txt",'rb')
content = fp.readline()
print(content)
輸出:b’\xe5\x8a\xa0\xe6\xb2\xb9\xef\xbc\x8c\xe5\xa5\xbd\xe5\xa5\xbd\xe5\xb9\xb2\xef\xbc\x81’
(3)r+
以讀寫方式打開一個文件。文件指針將會放在文件的開頭。直接寫入會覆蓋文件開頭的內容。
原始內容:
加油,好好干!別放棄
fp = open(r"E:\test.txt",'r+',encoding='utf-8')
fp.write("開心吧")
fp.close()
fp = open(r"E:\test.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()
執行后:
開心吧好好干!別放棄
(4)rb+
以二進制讀寫方式打開一個文件。文件指針將會放在文件的開頭。
(5)w
以寫入打開一個文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創建新文件。
(6)wb
以二進制寫入方式打開一個文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創建新文件。
(7)w+
以讀寫方式打開一個文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創建新文件。
原始內容:
開心吧好好干!別放棄
fp = open(r"E:\test.txt",'w+',encoding='utf-8')
fp.write("認真一點")
fp.close()
fp = open(r"E:\test.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()
執行后直接覆蓋所有原始內容:
認真一點
(8)wb+
以二進制讀寫格式打開一個文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創建新文件。
(9)a
以追加方式打開一個文件。如果文件已存在,文件指針將會放在文件結尾。即:新的內容將會被追加到已有的內容之后。如果該文件不存在,則創建新文件可用于寫入。注意,不能讀,讀會出錯。
(10)a+
以讀寫方式打開一個文件。如果文件已存在,文件指針將會放在文件結尾。即:新的內容將會被追加到已有的內容之后。如果該文件不存在,則創建新文件可用于讀寫。
原始內容:
認真一點
fp = open(r"E:\test.txt",'a+',encoding='utf-8')
fp.write("你就離成功近一點")
fp.close()
fp = open(r"E:\test.txt", 'r', encoding='utf-8')
content = fp.readline()
print(content)
fp.close()
執行后追加:
認真一點你就離成功近一點
這時候,指針放在文件尾部,直接讀取會沒有內容,需要將指針移動(seek)到文件的頭部:
with open(r"E:\test.txt",'a+',encoding='utf-8') as fp:
fp.seek(0,0)
content = fp.readline()
print(content)
(11)ab+
以二進制讀寫方式打開一個文件。如果文件已存在,文件指針將會放在文件結尾。即:新的內容將會被追加到已有的內容之后。如果該文件不存在,則創建新文件可用于讀寫。
1.3 參數3
編碼的方式,常用utf-8,gbk等。如:encoding=‘utf-8’
如果是二進制的方式,這個參數不需要填,填了還會報錯。
2.with open() as
這是open()的一種升級用法,控制塊結束的時候文件會自動關閉,不需要顯示地調用close()關閉文件。這種方法更方便使用,所以推薦大家使用這種方法。
with open(r"E:\test.txt",'r',encoding='utf-8') as fp:
content = fp.readlines()
3.open函數常用的方法
3.1 讀
文件內容:
認真一點你就離成功近一點
啊啊啊啊啊啊啊啊啊啊啊
fffffffffff
(1)read()
一次性讀取整個文件內容,將整個文件放到一個字符串中。使用read(size)方法,返回文件中的前size個字符:
content = fp.read()
輸出:
認真一點你就離成功近一點
啊啊啊啊啊啊啊啊啊啊啊
fffffffffff
(2)readline()
每次讀取一行內容。
content = fp.readline()
輸出:
認真一點你就離成功近一點
(3)readlines()
一次性讀取整個文件內容到一個迭代器以供我們遍歷(讀取到一個list中,以供使用,比較方便)
content = fp.readlines()
輸出;
[‘認真一點你就離成功近一點\n’, ‘啊啊啊啊啊啊啊啊啊啊啊\n’, ‘fffffffffff’]
3.2 寫
(1)write()
fp.write()的參數必須是一個字符串,就是你要寫入文件的內容.
(2)writelines()
fp.writelines()的參數可以是列表,也可以是字符串。
3.3 獲取文件讀寫類型
如果文件可寫,則 fp.writable() 方法返回 True,否則返回 False。
如果文件是可讀的,則 fp.readable() 方法返回 True,否則返回 False。
比如:以w方式打開的文件,fp.readable()返回False,fp.writable()返回True。
3.4 指針移動
seek
f.seek(偏移量,[起始位置])
起始位置的三種取值:0文件開頭,1當前位置,2文件末尾
例子見1.3中(10)a+
3.5 當前指針位置
tell()返回一個整數,表示當前文件指針的位置(就是到文件頭的字節數).
如果是utf-8編碼,那么一個中文字符占用三個字節,一個英文字符占用一個字節。如果是gbk編碼,那么一個中文字符占用兩個字節,一個英文字符占用一個字節。
with open(r"E:\test.txt",'a+',encoding='utf-8') as fp:
content = fp.tell()
print(content)
打印:30
3.6 truncate
truncate(size) 方法用于截斷文件,如果指定了可選參數 size,則表示截斷文件為 size 個字符。 如果沒有指定 size,則從當前位置起截斷;截斷之后 size 后面的所有字符被刪除。
總結
原文鏈接:https://blog.csdn.net/liujingliuxingjiang/article/details/120744826
相關推薦
- 2022-06-06 SpringBoot、SpringCloud、SpringCloudAlibaba的版本對應關系
- 2022-07-14 C語言深入探索之單鏈表與typedef的用法_C 語言
- 2024-07-18 Spring Security之基于方法配置權限
- 2022-06-08 Flutter集成高德地圖并添加自定義Maker的實踐_Android
- 2022-07-03 Qt讀寫ini文件之QSettings用法_C 語言
- 2022-10-20 python文件數據分析治理提取_python
- 2023-08-01 Antd的Select組件二次封裝
- 2022-10-24 利用Pandas求兩個dataframe差集的過程詳解_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支