os.unlink(filepath)
刪除檔案
os.remove(filepath)
同上os.rmdir(dirpath)
刪除資料夾,必須要是空資料夾才能刪除
os.removedirs(dirpath)
同上os.rename(oldpath,newpath)
重新命名檔案、資料夾。要求2個路徑只有檔名部分不同,其餘要相同。若目標已存在,會報錯。
os.renames(oldpath,newpath)
同上os.mkdir(dirpath)
建立資料夾。如果資料夾已存在,會報錯;如果前面的路徑不存在,會報錯。
os.makedirs(dirpath)
遞迴建立資料夾。如果前面的路徑不存在,會自動建立。
os.listdir(dirpath)
列出該資料夾下的所有子資料夾,以列表形式返回。只列出子資料夾,不會列出檔案、後代資料夾。可用於遍歷。
os.chdir(dirpath)
切換到指定目錄
os.getcwd()
獲取當前目錄(注意是目錄)的絕對路徑。
如果之前用chdir()切換了路徑,此函式得到的是目標路徑。
os.path.getsize(filepath)
返回檔案大小(位元組數)
os.path.exists(path)
檢測檔案|資料夾是否存在,返回bool值。
這2個方法是path子模組的方法。
沒有新建檔案的方法,但可以通過開啟檔案來新建檔案:開啟檔案時指定開啟模式是 檔案不存在時自動建立的模式,這樣就能新建檔案了。
path均為路徑,字串形式。
os.open(filepath,mode)
開啟檔案,返回檔案描述符(常用fd表示)。常用的mode:
os.fdopen(fd,[,mode[,bufsize]]);
此方法是內建函式open() 的別名。
mode -- 可選,和 python 內建的 open()函式的mode引數一樣,可以是r,w,a,r+,w+,a+...
bufsize-- 可選,指定返回的檔案物件是否帶緩衝:bufsize=0,表示沒有帶緩衝;bufsize=1,表示該檔案物件是行緩衝的;bufsize=正數,表示使用乙個指定大小的緩衝衝,單位為byte,但是這個大小不是精確的;bufsize=負數,表示使用乙個系統預設大小的緩衝,預設時使用系統預設大小的緩衝。
os.read(fd,n)
fd:檔案描述符,n:最多讀取的位元組數
返回讀取到的字串
os.write(fd,bytes)
寫入乙個字串。返回實際寫入字串的長度。
要以位元組、位元組陣列的形式寫入。
示例:bytes("ok","utf-8") 將字串轉換為位元組
os.lseek(fd,pos,how)
設定檔案指標的當前位置。
第三個引數是參考點,seek_set 或 0 表示檔案頭; seek_cur或 1 表示當前位置; os.seek_end或2表示檔案尾。
第二個引數制定相對參考點的偏移量
os.close(fd)
關閉檔案
importosfd=os.open("
1.txt
",os.o_rdwr)
os.write(fd,bytes(
"hello
\nworld
","utf-8"))
os.close(fd)
importosfd=os.open("
1.txt
",os.o_rdwr)
bytes=os.read(fd,1024) #
返回的是位元組形式
print(bytes.decode("
utf-8
")) #
解碼,將讀取到的位元組轉換為字串
os.close(fd)
f=open(file[, mode])
mode常用的值:
模式 描述r
唯讀。預設mode時預設為r。以r開頭的:指標放在檔案頭,若檔案不存在,會報錯。
rb唯讀,開啟二進位制檔案。
r+讀寫
rb+讀寫,開啟二進位制檔案
w只寫。以w開頭的:指標放在檔案頭,如果檔案不存在,會自動建立。
wb只寫,開啟二進位制檔案
w+讀寫
wb+讀寫,開啟二進位制檔案
a追加。以a開頭的:指標放在檔案尾,如果檔案不存在,會自動建立。
ab追加,開啟二進位制檔案
a+追加,可讀寫。
ab+追加,可讀寫,開啟二進位制檔案
寫不是先清空原有內容,再寫入,而是直接覆蓋。
比如原來的內容是「hello wolrd」,寫入乙個「ok」,變為「okllo world」。
寫入的內容比原來的長,才會覆蓋完。
使用open()開啟檔案後,會返回乙個file物件,表示檔案本身。 file 物件常用的方法:
函式
描述file.flush()
把內部緩衝區的資料立刻寫入檔案
file.close()
關閉檔案
file.read([size])
讀取指定的位元組數,預設size或size為負數時,會讀取所有內容。
如果是文字檔案,返回讀取的字串(如果讀取到的是空串,說明已到檔案尾);如果是二進位制檔案,返回讀取到的位元組。
file.readline()
讀取一行,以字串(如果讀取到的是空串,說明已到檔案尾)或位元組形式返回。
file.readlines()
讀取所有行,以字串列表或位元組列表形式返回。
file.write(str)
寫入乙個字串,返回實際寫入的字元數(注意是字元數)
file.writelines(list|tuple)
寫入乙個字串列表|元組,元素必須是字串。
寫完乙個元素後,會在後面接著寫,不會自動換行。如果要換行,需要自己加"\n"
file.tell()
返回檔案指標的當前位置(從檔案頭開始的位元組數)
file.seek(offset[, whence])
設定檔案指標的當前位置。
offset表示偏移量,int型,預設以字元為單位。
0 檔案頭
1 當前位置(預設)
2 檔案尾
讀|寫的時候,檔案指標會自動後移。
如果以文字檔案的方式開啟(不帶b),則讀取時返回字串|字串列表,寫入時只能寫入字串。
如果以二進位制的形式開啟(帶b),則讀取時返回位元組,寫入時可以寫入任何型別(底層都是位元組)。
f=open("1.txt
","r+")
#str=f.read(1024) #讀指定的位元組數
#str=f.readline() #讀一行
str=f.readlines() #
全讀完,作為列表返回,一行乙個元素
(str)
f.close()
f=open("1.txt
","r+")
f.write(
"hello
") #
從頭開始覆蓋(不是先清空原有內容,再寫入,是直接從頭開始寫,可能覆蓋不完)
f.close()
pickle模組可以實現資料的序列化和反序列化。
pickle.dump(物件|變數|值, 檔案物件)
importpickle
file=open("
1.txt
","wb")
str="
hello
"list=[1,2,3]
pickle.dump("ok
",file)
pickle.dump(str,file) #可同時序列化多個資料
pickle.dump(1,file) #
需要以二進位制形式開啟檔案。以文字檔案形式開啟,只能寫入字串型別,不能寫入其他型別。
pickle.dump(list,file)
file.close()
x = pickle.load(檔案物件)
importpickle
file=open("
1.txt
","rb
") #
如果只有字串,可以以文字檔案形式開啟;如果有其他型別的,就必須以二進位制形式開啟,否則反序列化會出錯
a=pickle.load(file)
b=pickle.load(file)
c=pickle.load(file)
d=pickle.load(file)
print(a,b,c,d) #
ok hello 1 [1, 2, 3] 反序列化的順序和序列化的順序一致
file.close()
python 檔案操作
簡明 python 教程 中的例子,python 執行出錯,用open代替file 可以執行。poem programming is fun when the work is done if you wanna make your work also fun use python f open e ...
python檔案操作
1,將乙個路徑名分解為目錄名和檔名兩部分 a,b os.path.split c 123 456 test.txt print a print b 顯示 c 123 456 test.txt 2,分解檔名的副檔名 a,b os.path.splitext c 123 456 test.txt pri...
Python 檔案操作
1.開啟檔案 如下 f open d test.txt w 說明 第乙個引數是檔名稱,包括路徑 第二個引數是開啟的模式mode r 唯讀 預設。如果檔案不存在,則丟擲錯誤 w 只寫 如果檔案 不存在,則自動建立檔案 a 附加到檔案末尾 r 讀寫 如果需要以二進位制方式開啟檔案,需要在mode後面加上...