對檔案的讀寫操作,編碼問題,os模組,遞迴。
1.找到檔案
2.開啟檔案
3.讀取檔案內容
4.關閉檔案
path = r"e:\hello.txt"
open(file, mode='r', buffering=none, encoding=none, errors=none, newline=none, closefd=true)
f = open(path,"r")
data = f.read()
print(data)
file :開啟檔案的路徑
mode:開啟方式 r 制度的方式開啟檔案,檔案的引用放在開頭
rb 以二進位制方式開啟唯讀檔案,檔案引用在開頭
r+ 以讀寫方式開啟檔案,檔案的引用在開頭
w 以只寫方式開啟檔案,如果該檔案已經存在,則將其內容覆蓋,如果不存在則會建立檔案
awb 以二進位制方式開啟只寫檔案,如果該檔案已經存在,則將其內容覆蓋,如果不存在則會建立檔案
w+ 以讀寫方式開啟檔案,如果該檔案已經存在,則將其內容覆蓋,如果不存在則會建立檔案
a 開啟乙個檔案用於追加的,如果該檔案已經存在不會將內容覆蓋,放在末尾,如果不存在則建立檔案
a+ 開啟乙個檔案用於讀寫的,如果該檔案已經存在不會將內容覆蓋,放在末尾,如果不存在則建立檔案
encoding:編碼方式
errors:錯誤處理。
檔案描述符(本質就是乙個引用),通過檔案描述符可以操作檔案
f = open(path,"r")
f = open(path,"rb")
f = open(path,"rb",encoding="gbk")
f = open(path,"rb",encoding="utf-8",errors="ingore")
str1 = f.read()
print(str1)
str2 = f.read(12)
print(str2)
str3 = f.readline()
print(str3)
list4 = f.readlines()
print(list4)
檔案使用完必須關閉,因為檔案物件占用作業系統的資源,並且作業系統同一時間能開啟的檔案的數量是有限的。
讀取檔案的原理是從檔案描述符位置向後讀取。
當讀完的時候修改檔案描述符的位置
print(f.tell())
f.seek(0)#檔案描述符位置修改
過程:1.找到檔案
2.開啟檔案
3.將內容寫入緩衝區,此時內容沒有寫入檔案
4.重新整理緩衝區《直接把緩衝區的資料立刻寫入檔案》
a.程式結束的時候
b.關閉檔案的時候
c.手動重新整理 flush()
d.\n c語言裡的
e.緩衝區滿了
5.關閉檔案
path = r"e:\hello.txt"
f = open(path, "w")
f.write("xiaoha is a nice man")
f.flush()
f.close()
.encode
.decode
with open(path,"wb") as f :
info = "i want **** you!哈"
info = info.encode("utf-8")
f.write(info)
with open(path,"rb")as f2:
info = f2.read()
print(info)
info = info.decode("utf-8")
print(info)
作用:資料的讀寫不一定都是檔案,也可以在記憶體中讀寫,作用是在記憶體中讀寫檔案的
作用:stringio只能操作字串,bytesio可以操作二進位制資料,作用是在記憶體中讀寫bytes
from io import stringio
from io import bytesio
f = stringio()
#寫f.write("xiaoha")
f.write(" is good man")
info = f.getvalue()#只能讀取f寫入記憶體中的資料
print(info)
f0 = stringio("good \n nice\n")
f0.read()
f1 = bytesio()
#f1.write("小哈").encode("utf-8")
print(f1.getvalue())
作用:包含了普片的作業系統功能,提供了非常豐富的方法來處理檔案和目錄
使用:import os
print(os.name)
nt windows
posix linux unix
print(os.uname)#linux,unix下獲取詳細的系統資訊
print(os.environ)#獲取系統中的環境變數
print(os.environ.get("windir"))#獲取指定環境變數的值。
print(os.curdir)#得到的是當前目錄
print(os.getcwd())#得到當前工作目錄的絕對路徑
print(os.listdir())#返回指定目錄下的所有檔案, listdir 沒有路徑返回當前工作路徑下的。
os.mkdir(path)#建立目錄
os.rmdir(path)#刪除目錄
print(os.stat(path))#得到檔案資訊
os.rename()#重新命名
os.remove()#刪除普通檔案
#執行shell命令/
os.system("notepad")#開啟text文件
#操作檔案和目錄的函式一部分妨礙os模組中,還有一部分妨礙os.path中
print(os.path.abspath("."))#返回指定路徑的絕對路徑
print(os.path.join("",""))#拼接路徑
print(os.path.split(r""))#拆分路徑
print(os.path.splitext())#獲取副檔名
print(os.path.isdir())#判斷是否是目錄(必須存在),是返回true 否則false
print(os.path.isfile())#判斷普通檔案(文字檔案)是否存在,存在返回true,否則返回false
print(os.path.exists())#判斷檔案和目錄是否存在
print(os.path.getsize())#獲取檔案大小
print(os.path.basename())#獲得檔名
print(os.path.dirname())#獲取檔案路徑。
1.自身呼叫自身形成遞迴
2.兩個函式相互呼叫形成遞迴
遞推:遞迴呼叫:乙個函式呼叫自身,稱為遞迴呼叫
遞迴函式:乙個會呼叫姿勢很的函式稱為遞迴函式
凡是函式能幹的事,遞迴都能幹,
1.寫出臨界條件
2.找這一次和上一次的關係
3.假設當前函式已經能用,呼叫自身計算上一次的結果,再求出本次結果
在以後的開發過程避免使用遞迴,容易造成記憶體洩露,效率比較 偏低。
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後面加上...