fp = open(「檔名」,mode=「模式」,encoding=「utf-8」)一.檔案的寫入fp -> 檔案的io物件 (檔案控制代碼)
i => input 輸入
o => output 輸出
# 1.開啟檔案
fp = open("ceshi1.txt",mode="w",encoding="utf-8")
# 2.寫入內容
fp.write("把內容寫進去")
# 3.關閉檔案
fp.close()
** 二.檔案的讀取**
# 1.開啟檔案
fp = open("ceshi1.txt",mode="r",encoding="utf-8")
# 2.讀取內容
res = fp.read() # 把大象拿出來
print(res)
# 3.關閉檔案
fp.close()
** 三.位元組流的轉換**
bytes : 是用來傳輸或者儲存的資料格式b』1234』 b"abcd" b"我愛你" -> b開頭的位元組流,範圍只能是ascii編碼
如果是中文使用encode 和 decode 來進行轉換;
將字串和位元組流(bytes流)型別進行轉換 (引數寫成轉化的字元編碼格式)
#encode() 編碼 將字串轉化為位元組流(bytes流)
#decode() 解碼 將bytes流轉化為字串
encode 編碼 => 變成二進位制位元組流res = strvar.encode(「utf-8」)
print(res , type(res))
<*****===>
decode 解碼 =>二進位制位元組流恢復成原來的字串
res2 = res.decode(「utf-8」)
print(res2 , type(res2))
len可以計算位元組個數四.儲存二進位制位元組流num = len(res)
print(num) # 9
不需要指定encoding編碼集,否則報錯
五.讀取二進位制位元組流
res = fp.read()
1. 讀取原所有的內容
fp = open("集合.png",mode="rb")
res = fp.read()
fp.close()
2. 把讀取的內容儲存到另外乙個檔案
fp = open("集合2.png",mode="wb")
指定絕對路徑(完整路徑)
fp = open(r"e:\python31\day8\集合3.png",mode="wb")
fp.write(res)
fp.close()
(utf-8編碼格式下 預設乙個中文三個位元組 乙個英文或符號 占用乙個位元組)(1)r+ 可讀可寫
fp = open("test1.txt",mode="r+",encoding="utf-8")
res = fp.read()
fp.write("789")
fp.close()
print(res)
注意點:r,r+ 模式下,(2)w+ 可讀可寫1、檔案必須存在才能建立檔案io物件(fp)
2、游標會停止在讀寫終止的位置
fp = open("test2.txt",mode="w+",encoding="utf-8")
fp.write("夢想起航")
fp.seek(0)
res = fp.read()
fp.close()
print(res)
注意點:w,w+ 模式下,(3)a+ (可讀可寫)(寫入內容時強制把游標移動到最後)1、檔案不存在時可自動建立
2、游標會停止在讀寫終止的位置(同r,r+)
3、該模式下,生成檔案io物件(fp)時已預設清空檔案內容(慎用)
fp = open("test3.txt",mode="a+",encoding="utf-8")
fp.seek(0)
fp.write("789")
fp.seek(0)
res = fp.read()
fp.close()
print(res)
注意點:a,a+ 模式下,#read() 功能: 讀取字元的個數(裡面的引數代表字元個數)1、檔案不存在時可自動建立
2、寫入時游標會被強制放到檔案內容末尾(區別於r,w)(即使使用seek移動時也不行)
3、該模式下,生成檔案io物件(fp)時已預設清空檔案內容(慎用)
#seek() 功能: 調整指標的位置(裡面的引數代表位元組個數)
#tell() 功能: 當前游標左側所有的位元組數(返回位元組數)
seek(0) 直接把游標移動到檔案開頭
seek(0,2) 直接把游標移動到檔案末尾
tell() 計算檔案指標左側所有的位元組數
***注意點,seek移動中文位元組的時候,有可能報錯
with open("集合.png",mode="rb") as fp:
res = fp.read()
with open(r"e:\python31\day8\集合4.png",mode="wb") as fp:
fp.write(res)
優化合併如下:
with open("集合.png",mode="rb") as fp1 , open(r"e:\python31\day8\集合5.png",mode="wb") as fp2:
res = fp1.read()
fp2.write(res)
重新整理緩衝區 flushreadable() 判斷檔案物件是否可讀# 當檔案關閉的時候自動重新整理緩衝區
# 當整個程式執行結束的時候自動重新整理緩衝區
# 當緩衝區寫滿了 會自動重新整理緩衝區
# 手動重新整理緩衝區
fp.flush() 手動把緩衝區裡面的內容寫入檔案當中
writable() 判斷檔案物件是否可寫
readline() 讀取一行
『』』『引數 > 當前行字元總個數 => 以當前行讀取
引數 < 當前行字元總個數 => 以引數的大小來讀取字元的個數
預設readline 讀取一行』』』
readlines() 將檔案中的內容按照換行讀取到列表當中
lst_new =
with open("ceshi7.txt",mode="r+",encoding="utf-8") as fp:
lst = fp.readlines()
# print(lst) # ['\t窗前明月光\n', '疑是地上霜\t\t\n', '\t\t舉頭王明月\n', '\t低頭思故鄉']
for i in lst:
print(lst_new) # ['窗前明月光', '疑是地上霜', '舉頭王明月', '低頭思故鄉']
writelines() 功能:將內容是字串的可迭代性資料寫入檔案中 引數:內容為字串型別的可迭代資料
lst = ["春眠不覺曉\n","處處蚊子咬\n","夜來大狗熊\n","乙個也跑不了\n"]
# lst = [1,2,3,4] error
with open("ceshi8.txt",mode="w",encoding="utf-8") as fp:
fp.writelines(lst)
truncate() 功能: 把要擷取的字串提取出來,然後清空內容將提取的字串重新寫入檔案中 (位元組)
with open("ceshi8.txt",mode="r+",encoding="utf-8") as fp:
fp.truncate(3)
python中檔案相關操作
有個地方需要注意,我路徑中有 t 在python中會被定義為轉義字元,在路經前加上r就會避免這種情況。rstrip避免多出現空行 優化了一下 test path r f python test.txt with open test path as test1 lines test1.readline...
Python中檔案操作和資料夾操作的學習筆記
3 檔案讀寫 4 資料夾操作 python中檔案和資料夾操作還是十分重要的 首先可以檢視一下工作目錄,檢視當前的工作目錄 print os.getcwd 如果工作目錄不正確,可以用os.chdir 函式來進行修改 os.path.dirname file os.chdir os.path.dirna...
Python 檔案操作 和 目錄操作
我們知道,檔名 目錄名和鏈結名都是用乙個字串作為其識別符號的,但是給我們乙個識別符號,我們該如何確定它所指的到底是常規檔案檔名 目錄名還是鏈結名呢?這時,我們可以使用os.path模組提供的isfile函式 isdir函式和islink函式來達成我們的目標,如下所示 print myfile,是乙個...