A. python 修改文件名
importos
importsys
path="D:emojis"for(path,dirs,files)inos.walk(path):
forfilenameinfiles:
newname="emoji_"+filename
os.rename(path+"\"+filename , "D: ew_emojis"+"\"+newname)
python文件和目錄操作方法
1、os.mknod("test.txt")
#創建空文件
2、fp = open("test.txt",w)
#直接打開一個文件,如果文件不存在則創建文件
3、關於open 模式:
w:以寫方式打開,
a:以追加模式打開(從EOF開始,必要時創建新文件)
r+:以讀寫模式打開
w+:以讀寫模式打開(參見w)
a+:以讀寫模式打開(參見a)
rb:以二進制讀模式打開
wb:以二進制寫模式打開(參見w)
ab:以二進制追加模式打開(參見a)
rb+:以二進制讀寫模式打開(參見r+)
wb+:以二進制讀寫模式打開(參見w+)
ab+:以二進制讀寫模式打開(參見a+)
B. Python 讀file1寫file2,file1 size 是12KB,為什麼file2隻寫了7.9KB
打開方式中的參數 mode 可能是造成你遇到問題的關鍵,
'r'和'rb' 'w'和'wb'
區別就在於是否採用2進制方式進行讀寫,如果不是二進制讀寫,在遇到換行的時候,會做轉換,
這個轉換對於使用者來說是透明的,但是會造成實際的二進制數據不同。
C. python 讀寫文件中 w與wt ; r與rt 有何區別
w,r,wt,rt都是python裡面文件操作的模式。
w是寫模式,r是讀模式。
t是windows平台特有的所謂text mode(文本模式),區別在於會自動識別windows平台的換行符。
類Unix平台的換行符是\n,而windows平台用的是\r\n兩個ASCII字元來表示換行,python內部採用的是\n來表示換行符。
rt模式下,python在讀取文本時會自動把\r\n轉換成\n.
wt模式下,Python寫文件時會用\r\n來表示換行。
D. python文件的創建、寫入、讀取
最近在構思如何 本地化股票數據 ,覺得有必要復習一下python對文件的創建、寫入、和讀取。
首先先了解一下對於文件的處理都有常用函數:
open(path, mode):生成文件對象。
參數說明:path文件路徑、mode文件的操作模式
文件的操作模式說明
1、寫入模式:『w』創建、『wb』創建二進制、『a』追加內容、『ab』二進制形式追加內容(另外如在後面添加『+』號,附加讀取功能如:『w+』)
可用write()、writelines()寫入內容、close()保存文件
注意:windows系統在輸入寫入中文時,輸入參數 encoding=『utf-8』
可用read()函數對文件內容進行讀取
注意:讀取的內容是從結尾開始的,用seek(0)函數指定讀取位置為開頭
這里我用『w+』模式來舉例
2、讀取模式:『r』讀取內容、『rb』讀取二進制內容(區別於寫入模式的讀取,讀取模式從開頭開始讀取)
除了read()、還有readline()調用一次返回一行數據、readlines()返回每行數據list
另外還有mode屬性:看查文件對象的模式、closed屬性:判斷文件是否關閉、name屬性:返迴文件名
這里我還要介紹一個關鍵字with,他是一個表達式能為調用的文件對象別名,且自動關閉文件。
E. python讀寫文件
讀文件
1)使用open()方法打開文件,返回一個文件對象
原型:open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
舉例:f = open('test.txt', 'r')
test.txt表示文件路徑(包含文件名,這個file參數可以是絕對或者相對路徑)
r表示是讀文本文件,rb是讀二進制文本文件。(這個mode參數默認值就是r)
2)使用close()方法關閉文件
f.close()
打開後的文件必須關閉,因為文件對象會佔用系統資源,系統打開文件數量也就有限了
3)打開文件時的異常處理
f=open('test.txt', 'r')
f.read()
f.close()
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
文件讀寫時都有可能產生異常IOError(比如文件不存在),這樣其後面的f.read(),f.close()就不會調用。為保證無論是否異常都可以關閉文件,一般使用try ... finally來處理:
try:
f = open('test.txt', 'r')
f.read()
finally:
if f:
f.close()
但這種寫法過於繁瑣,所以Python引入了with語句來自動調用close()方法:
with open('test.txt', 'r') as f:
f.read()
4)讀文件 - read()、readline() 和 readlines()
read() 一次讀取整個文件,它通常用於將文件內容放到一個字元串變數中。如果文件過大,內存不夠,可以通過反復調用read(size)方法,每次最多讀取size個位元組的內容。
readline() 一次讀取文件中一行內容,可反復調用
readlines() 一次讀取所有內容並按行返回列表,該列表可以由for ... in ... 結構再進一步處理。
特別注意:
這三種方法是把每行末尾的'\n'也讀進來了,如有需要就得我們手動去掉'\n'
with open('test.txt', 'r') as f:
list = f.readlines()
for i in range(0, len(list)):
list[i] = list[i].rstrip('\n')
寫文件
1)寫文件和讀文件是一樣的,唯一區別是open文件時,傳入標識符不同,即'w'或者'wb'表示寫文本文件或寫二進制文件
f = open('test.txt', 'w')
f = open('test.txt', 'wb')
f = open('test.txt', 'a')
f.close()
特別注意:
1. 如果沒有這個文件,會自動創建一個新文件;如果有,就會先把原文件的內容清空再寫入;若不想清空原來的內容而是直接在後面追加新的內容,就用'a'這個模式
2. 寫文件,操作系統往往不會立刻把數據寫入磁碟,而是放到內存緩存起來,空閑的時候再慢慢寫入。只有調用close()方法時,操作系統才保證把沒有寫入的數據全部寫入磁碟。忘記調用close()的後果是數據可能只寫了一部分到磁碟,剩下的丟失了。
2)寫文件 - write()、writelines()
write()方法和read()、readline()方法對應,是將字元串寫入到文件中。
writelines()方法和readlines()方法對應,也是針對 列表 的操作。它接收一個 字元串列表 作為參數,將他們寫入到文件中。
特別注意:
換行符不會自動的加入,需要顯式的加入換行符。
f = open('test.txt', 'w')
f.writelines(["111\n", "222\n", "333\n"])
補充說明:
1)對於非默認編碼(utf-8)的文件,需要open時添加encording參數,選擇對應的編碼方式
2)r+, w+, a+,可讀可寫
3)seek()方法,移動文件指針
seek(offset[, whence]) ,offset是相對於某個位置的偏移量。位置由whence決定,默認whence=0,從開頭起;whence=1,從當前位置算起;whence=2相對於文件末尾移動,通常offset取負值。
F. python txt替換\r的問題
因為你寫入時打開文件的方式是'w',這代表換行符格式與操作系統保持一致。Windows的換行符是CRLF,也就是\r\n,於是字元串在被寫到文件中時,所有的\n都將被轉換為\r\n。而你讀取文件時打開的方式也是'r',在Window下這代表文件中所有的\r和\r\n都將被解釋為字元串中的\n。經過這樣一寫一讀的過程,原字元串中的所有\r都會變成\n,因此在你執行str1.replace()的時候,str1中已經沒有\r字元了,你可以用print(str1==str2)驗證一下,你會發現輸出結果是True。
如果你要保持字元串內容原樣寫入文件以及文件內容原樣讀出到字元串,不進行換行符的轉換,你需要指定寫入的方式為'wb',而讀取的方式為'rb'。
G. Python文件操作,看這篇就足夠!
文件的存儲方式
在計算機中,文件是以二進制的方式保存在磁碟上的文本文件和二進制文件
文本文件可以使用文本編輯軟體查看本質上還是二進制文件
二進制文件保存的內容不是給人直接閱讀的,而是提供給其她軟體使用的二進制文件不能使用文件編輯軟體查看
文件基本操作
在計算機中要操作文件一共包含三個步驟:1.打開文件2.讀、寫文件
讀 將文件內容讀入內容寫 將內存內容寫入文件
模式描述
t文本模式 (默認)。
x寫模式,新建一個文件,如果該文件已存在則會報錯。
b二進制模式。
+打開一個文件進行更新(可讀可寫)。
U通用換行模式(不推薦)。
r以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
rb以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。一般用於非文本文件如圖片等。
r+打開一個文件用於讀寫。文件指針將會放在文件的開頭。
rb+以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。一般用於非文本文件如圖片等。
w打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb以二進制格式打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。
w+打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb+以二進制格式打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。
a打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
ab以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
a+打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。
ab+以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。
文件打開模式有很多,但是我們實際用到的就只有六種。
我們總結一下主要用到的是下面六種
模式可做操作若文件不存在是否覆蓋文件原來內容
r只讀報錯——
r+可讀、可寫報錯是
w只寫創建是
w+可讀、可寫創建是
a只寫創建否,追加寫
a+可讀、可寫創建否,追加寫
只讀模式打開文件——只讀(r)
文件若不存在報錯:
讀寫模式打開文件——讀寫模式(r+)
數據寫入之前:
數據寫入之後:
會替換掉相同長度的內容
文件若不存在報錯:
寫模式打開文件——寫模式(w)
數據寫入之前:
數據寫入之後:
這種操作會刪除原來的文件內容,重新寫入Python,
並且把游標放在文件最開始。
若文件不存在,系統會創建該文件夾並重新寫入內容
讀寫模式打開文件——讀寫模式(w+)
數據寫入之前:
數據寫入之後:
這種操作會刪除原來的文件內容,重新寫入Python,
並且把游標放在文件最開始。
若文件不存在,系統會創建該文件夾並重新寫入內容
利用這個原理所以文件寫模式(w)、讀寫模式(w+)還可以用作刪除文件內容。
因為他們整個工作原理就是把文件原來的內容刪除,然後寫入新的內容。
如果我們寫入的內容為空,那麼不就是刪除文件內容。
數據寫入之前:
數據寫入之後:
寫模式打開文件(追加內容)——寫模式(a)
數據寫入之前:
數據寫入之後:
可以看到是在原先內容的基礎上在文末追加新的內容!
若文件不存在,系統會創建新的文件夾並寫入內容
讀寫模式打開文件(追加內容)——讀寫模式(a)
數據寫入之前:
數據寫入之後:
可以看到是在原先內容的基礎上在文末追加新的內容!
若文件不存在,系統會創建新的文件夾並寫入內容
二進制模式打開文件
我們看到了在文件打開模式中有以下模式:rb、wb……有這種帶 b 的。
什麼意思呢?
就是用二進制的方式打開文件。
很明顯,我們出現了以下錯誤:
主要原因是因為編碼的問題,可能是因為0x82這個位元組在gbk編碼中沒有這個字元,
可能原字元是兩個位元組,在gbk里被解析成了一個位元組,導致字元不存在。
這就是我們文件打開方式需要使用二進制讀取的原因。
文件操作
open 函數負責打開文件,並且返迴文件對象
read /write / close 三個方法都需要通過文件對象 來調用
文件和文件夾的操作
在Python中⽂件和⽂件夾的操作要藉助os模塊⾥⾯的相關功能,
具體步驟如下:
導⼊os模塊
使⽤ os 模塊相關功能
1、文件重命名
2、刪除文件
3、創建文件夾
4、刪除文件夾
5、獲取當前目錄
6、改變默認目錄
7、獲取目錄列表
H. python中讀txt文本r和rb哪個好
r
rb是二進制形式,所以還是r好
I. pythonopenyourfile是指什麼
f = open('your_file.txt','r')
就可以打開一個文件進行操作。第二個參數為對文件的操作方式,』w』是寫文件,已存在的同名文件會被清空,不存在則會創建一個;』r』是讀取文件,不存在會報錯;』a』是在文件尾部添加內容,不存在會創建文件,存在則直接在尾部進行添加;還有』wb』是寫二進制文件;』rb』是讀取二進制文件,比如圖片之類的。