第十五章 檔案讀寫

夜色的最黑暗。發表於2020-10-10

第十五章 檔案讀寫

常見的字元編碼格式

  1. python的直譯器使用的Unicode(記憶體)
  2. .py檔案在磁碟上使用的是utf-8儲存(外存)

對檔案的操作

寫入檔案可以用write()和writelines()
讀檔案可以用read(),readline()和readlines()
檔案的開啟模式:只讀r,只寫w,追加a,二進位制用b

開啟模式描述
r以只讀模式開啟檔案,檔案的指標將會放在檔案的開頭
w以只寫模式開啟檔案,如果檔案不存在則建立,如果檔案存在則覆蓋原有內容,檔案指標在檔案的開頭
a以追加模式開啟檔案,如果檔案不存在則建立,檔案指標在問檔案的開頭,如果檔案存在,則在檔案末尾追加內容,檔案指標在檔案末尾
b以二進位制方式開啟檔案,不能單獨使用,需要與其他模式一起使用,rb或wb
+以讀寫方式開啟檔案,不能單獨使用,需要與其他模式一起使用,a+

檔案物件的常用方法

方法名描述
read([size])從檔案中讀取size個位元組或字元的內容返回。若省略[size],則一次性讀取檔案的所有內容
readline()從文字檔案中讀取一行內容
readlines()把文字檔案中每一行都作為獨立的字串物件,並將這些物件放入列表返回
write(str)將字串str寫入檔案
writelines(s_list)將字串列表s_list寫入文字檔案,不新增換行符
seek(offset,[whence])將檔案指標移動到新的位置,offset表示相對於whence的位置:offset為正則向結束方向移動,為負則向開始方向移動。whence為0(預設值)表示從檔案頭開始計算,1表示從當前位置開始計算,2表示從檔案尾開始計算
tell()返回檔案指標的當前位置
flush()把緩衝區的內容寫入檔案,但不關閉檔案
close()把緩衝區的內容寫入檔案,關閉檔案,並釋放檔案物件相關資源
file = open('a.txt','r')
#print(file.readlines())# 將檔案內容全部讀出來
#print(file.readline())
print(file.read(2))# 可以選擇讀一部分
file.close()

file = open('b.txt','w')
file.write('Python')
file.close()

file = open('b.txt','a')
file.write('Python')
file.close()

file = open('c.txt','a')
#file.write('hello')
lst = ['java','go','python']
file.writelines(lst)
file.close()

src_file = open('logo.jpg','rb')
target_file = open('copylogo.jpg','wb')
target_file.write(src_file.read())
target_file.close()
src_file.close()

目錄操作

os模組

os模組是python內建的與作業系統功能和檔案系統相關的模組,該模組中的語句的執行結果通常與作業系統有關,在不同的作業系統上執行,得到的結果可能不一樣
os模組操作目錄相關函式

函式說明
getcwd()返回當前的工作目錄
listdir(path)返回指定路徑下的檔案和目錄資訊
mkdir(path,[mode])建立目錄
makedirs(path1/path2…,[mode])建立多級目錄
rmdir(path)刪除目錄
removedirs(path1/path2)刪除多級目錄
chdir(path)將path設定為當前工作目錄
import os
#os.system('notepad.exe') # 開啟記事本
#os.system('calc.exe') # 開啟計算器
# 直接呼叫可執行檔案
os.startfile('D:\\Program Files\\Tencent\\QQ\\Bin\\qq.exe')


import  os
print(os.getcwd())
#print(os.listdir('../chap15'))

#os.mkdir('newdir2')
#os.makedirs('A/B/C')

#os.rmdir('newdir2')
#os.removedirs('A/B/C')

os.chdir('D:\\pythonProject\\chap15')

os.path模組

os.path模組操作目錄相關函式

函式說明
abspath(path)用於獲取檔案或目錄的絕對路徑
exists(path)用於判斷檔案或目錄是否存在,如果存在返回True,否則返回False
join(path,name)將目錄與目錄或檔名拼接起來
splitext()分離檔名和副檔名
basename(path)從一個目錄提取檔名
dirname(path)從一個路徑中提取檔案路徑,不包括檔名
isdir(path)用於判斷是否路徑
import os.path
print(os.path.abspath('demo13.py'))
print(os.path.exists('demo13.py'),os.path.exists('demo18.py'))
print(os.path.join('D:\\pythonProject\\vipPython','demo13.py'))
print(os.path.split('D:\pythonProject\\vipPython\chap15\demo13.py'))
print(os.path.splitext('demo13.py'))
print(os.path.basename('D:\\pythonProject\\vipPython\\chap15\\demo13.py'))
print(os.path.dirname('D:\\pythonProject\\vipPython\\chap15\\demo13.py'))
print(os.path.isdir('D:\\pythonProject\\vipPython\\chap15\\demo13.py'))

'''
D:\pythonProject\vipPython\chap15\demo13.py
True True
D:\pythonProject\vipPython\demo13.py
('D:\\pythonProject\\vipPython\\chap15', 'demo13.py')
('demo13', '.py')
demo13.py
D:\pythonProject\vipPython\chap15
False
'''