Python第十六節課
本節內容
文件操作
# 打開文件 # 我們使用內置的open()函數將一個文件打開 # 語法格式爲:open(filename[, mode]) # filename表示文件的名稱,mode表示文件的模式 # 模式默認是隻讀模式(r) # 如果文件原來已經存在,那麼不需要指定模式 # 但是如果文件原來並不存在,那麼需要指定模式w # 模式有: # r rb r+ rb+ # 分別表示只讀,二進制只讀,可讀可寫,二進制可讀可寫 # w wb w+ wb+ # 分別表示只寫,二進制只寫,可讀可寫,二進制可讀可寫 # a ab a+ ab+ # 分別表示追加,二進制追加,可讀可寫,二進制可讀可寫
# 文件的屬性 # 在文件打開的前提下,我們可以查看文件的屬性 # file.name 文件的名稱 # file.mode 文件的權限 # file.closed 文件是否關閉 # 關閉文件 # file.close() 文件在執行之後,必須關閉,提高文件的安全性
# 寫入文件 # file.write(str) 文件在寫入的時候,一定要在打開文件的時候提前給寫入的權限,str就是寫進去的內容。
# 讀取文件 # file.read([count]) # 在讀取文件的時候,我們可以指定讀取的字符count # 如果,沒有指定讀取字符的時候,默認是全部讀取
# 定位與移動 # file.tell() 返回當前光標所在的位置 # file.seek(count, from) 移動光標,count表示移動的位置 # from表示移動的參照,0表示從頭開始 # 1表示從當前位置移動, 2表示從末尾移動
# with關鍵詞 # 語法格式: with open('a.txt') as f: f.write() .... # 其中with語句是需要些f.close的,會自動關閉文件
練習:
01、在沒有創建文件a.txt的前提下,打開文件a.txt
在文件中寫入內容:xiao zhu peiqi 666
查看文件是否關閉,如果未關閉,將文件關閉
02、使用with語句再次完善上述問題
注:沒有創建a.txt文件,代表本身存在。
def test(): file = open('a.txt', 'w+') file.write('xiao zhu peiqi 666') if file.closed: print("已關閉!文件") else: print("文件未關閉!正在關閉") file.close() # test() def test1(): with open('a.txt', 'w+') as f: a = 'xiao zhu peiqi 666' # f.tell() # f.seek(0, 1) f.write(a) if f.closed: print("已關閉!文件") else: print("文件未關閉!正在關閉") f.close() # test1()
OS模塊
創建目錄
# 創建一級目錄 os.mkdir(name) # name 就是目錄名稱 # 創建多級目錄 os.makedirs(name1/name2/name3) # 可以創建多級目錄
切換目錄
os.chdir(name) # 切換到指定的目錄下
查看當前位置
os.getcwd() # 返回當前所在的位置,絕對路徑
刪除目錄和文件
# 刪除文件 os.remove(name) # name 爲文件的名稱 # 刪除目錄 os.removedirs(name1/name2/name3) # 刪除多級目錄
練習:
判斷是不是在window下,如果在windows下則進行以下操作
創建一個多級目錄demo01/demo02/demo03
在demo03下,創建一個文件a.txt
在demo02下,創建一個文件b.txt
將a.txt改名爲one.txt
並寫入’this is one.txt file’
在目錄demo03下,創建一個新的目錄,demo04
打印出當前的位置,並且在demo04中創建文件c.txt
將文件b.txt 刪除掉def test2(): if os.name == 'nt': print("處於 windows 系統下---") path_name = os.getcwd() print(path_name) os.makedirs('demo01/demo02/demo03') os.chdir('E:\project-s\python開發課\day16\demo01\demo02') open('b.txt', 'w+') os.chdir('E:\project-s\python開發課\day16\demo01\demo02\demo03') open('a.txt', 'w+') os.rename('a.txt', 'one.txt') with open('one.txt', "w+") as f: f.write('this is one.txt file') os.chdir('E:\project-s\python開發課\day16\demo01\demo02\demo03') os.mkdir('demo04') os.chdir('demo04') os.getcwd() open('c.txt', 'w+') os.chdir('E:\project-s\python開發課\day16\demo01\demo02') os.remove('b.txt') else: print("處於 linux 系統下---") test2()
平臺相關信息的獲取
操作系統的種類
os.name # nt 表示windows # posix 表示linux
操作系統的分隔符
os.seq()
路徑
os.path.isfile(文件名稱) 判斷是否是文件 os.path.isdir(目錄文件) 判斷是否是目錄 os.path.split("絕對路徑") 將絕對路徑進行分割 os.path.join("字符串") 將字符串鏈接成完整路徑
作業:
在一個主目錄下,創建多個文件夾,每個文件夾下創建10個txt文件。
本題是運維工程師面試題~
多個文件夾名稱可自定義,面試爲[‘apacher’, ‘html’, ‘android’, ‘app’, ‘ios’, ‘nginx’, ‘tomcat’, ‘python’]
# 參考方法 def file_tree(path): a = ['物聯網', 'AI', 'matplotlib', 'anaconde', 'NLP', 'lua'] for i in a: os.chdir(path) os.mkdir(i) z = 0 os.chdir(path + f"//{i}") while z <= 10: z += 1 now = datetime.datetime.now().date() result = now - datetime.timedelta(days=z) open(f'{result.strftime("%Y-%m-%d")}.txt', 'w+') file_tree('E://sample')