第十章例項與實戰
例項01:建立並開啟記錄螞蟻莊園動態的檔案
在IDLE中建立一個名稱為 antmanor_message.py 的檔案,然後在該檔案中,首先輸出一條提示資訊,然後再呼叫open()函式建立或開啟檔案,最後再輸出一條提示資訊。
程式碼如下:
print("\n", "="*10, "螞蟻莊園動態", "="*10) file = open('message.txt', 'w') print("\n 即將顯示......\n")
執行結果如下:
例項02:向螞蟻莊園的動態檔案寫入一條資訊
在 IDLE中建立一個名稱為 antmanor_message_w.py的檔案,然後在該檔案中,首先應用open()函式以寫方式開啟一個檔案,然後再呼叫write()方法向該檔案中寫入一條動態資訊,再呼叫close()方法關閉檔案。
程式碼如下:
print("\n", "="*10, "螞蟻莊園動態", "="*10) file = open('message.txt', 'w') #寫入動態資訊 file.write("你使用了1張加速卡,小雞擅起袖子開始雙手吃飼料,進食速度大大加快。\n") print("\n 寫入了一條動態......\n") file.close() #關閉檔案物件 print("\n", "="*10, "螞蟻莊園動態", "="*10) file = open('message.txt', 'a') #追加一條動態資訊 file.write("mingri的小雞在你的莊園待了22分鐘,吃了6g飼料之後,被你趕走了。\n") print("\n 追加了一條動態......\n") file.close()
執行結果如下:
例項03:顯示螞蟻莊園的動態
在IDLE中建立一個名稱為antmanor_message_r.py 的檔案,然後在該檔案中,首先應用open()函式以只讀方式開啟一個檔案,然後再呼叫read()方法讀取全部動態資訊,並輸出。
程式碼如下:
print("\n", "="*25, "螞蟻莊園動態", "="*25) with open('message.txt', 'r') as file: #開啟儲存螞蟻莊園動態資訊的檔案 message = file.read() #讀取全部動態資訊 print(message) print("\n", "="*29, "over", "="*29, "\n")
執行結果如下:
例項04:逐行顯示螞蟻莊園的動態
在IDLE中建立一個名稱為 antmanor_message_rl.py的檔案,然後在該檔案中,首先應用open()函式以只讀方式開啟一個檔案,然後應用while 語句建立迴圈,在該迴圈中呼叫readline()方法讀取一條動態資訊並輸出,另外還需要判斷內容是否已經讀取完畢,如果讀取完畢應用 break 語句跳出迴圈。
程式碼如下:
print("\n", "="*35, "螞蟻莊園動態", "="*35) with open('message.txt', 'r') as file: #開啟儲存螞蟻莊園動態資訊的檔案 number = 0 while True: number += 1 line = file.readline() if line == '': #空白行 break print(number, line, end="\n") #輸出一行內容 print("\n", "="*39, "over", "="*39, "\n")
執行結果如下:
例項05:遍歷指定目錄
在IDLE中建立一個名稱為walk_list.py 的檔案,首先在該檔案中匯入os模組,並定義要遍歷的根目錄,然後應用for 迴圈遍歷該目錄,最後迴圈輸出遍歷到檔案和子目錄。
程式碼如下:
import os path = "D:\\pythonwork\\pythonwork\\第8章01 建立計算BMI指數" #指定要遍歷的根目錄 print("【", path,"】目錄下包括的檔案和目錄:") for root, dirs, files in os.walk(path, topdown=True): #遍歷目錄 for name in dirs: print("O", os.path.join(root, name)) for name in files: print("O", os.path.join(root, name))
執行結果如下:
例項06:獲取檔案基本資訊
在IDLE中建立一個名稱為fileinfo.py的檔案,首先在該檔案中匯入os模組,然後呼叫os模組的stat()函式獲取檔案的基本資訊,最後輸出檔案的基本資訊。
程式碼如下:
import os fileinfo = os.stat("message.txt") #獲取檔案的基本資訊 print("檔案完整路徑:", os.path.abspath("message.txt")) #獲取檔案的完整數路徑 #輸出檔案的基本資訊 print("索引號:", fileinfo.st_ino) print("裝置名:", fileinfo.st_dev) print("檔案大小: ", fileinfo.st_size, "位元組") print("最後一次訪問時間: ", fileinfo.st_atime) print("最後一次修改時間: ", fileinfo.st_mtime) print("最後一次狀態變化時間:", fileinfo.st_ctime)
執行結果如下:
實戰一:根據當前時間建立檔案
在指定目錄中,批量建立檔案,檔名為%Y%m%d%H%M%S格式的當前時間(精確到秒)。例如,建立檔案的時間為2018年4月18日9點18分38秒,則該檔案的檔案為20180418091838.txt。為了防止出現重名的檔案,在每建立一個檔案後,讓執行緒休眠一秒。效果如圖10.30和圖10.31所示
程式碼如下:
#----------實戰一:根據當前時間建立檔案----------# import time def create(): global name localtime = time.strftime("%Y%m%d%H%M%S", time.localtime()) name = localtime + '.txt' with open(name,'a') as file: pass if __name__ == '__main__': num = int(input("請輸入需要生成的檔案數:")) for i in range(num): create() print("file" + str(i+1) + ":" + name) time.sleep(1) print("生成檔案成功!")
執行結果如下:
實戰二:批量新增資料夾
在指定的目錄中,批量建立指定個數的資料夾(即目錄),效果如圖10.32和圖10.33所示。
程式碼如下:
#----------實戰二:批量新增資料夾----------# import os num = int(input("請輸入需要生成的檔案夾個數:")) for i in range(num): os.listdir("D:\\testfile") path = "D:\\testfile\\"+ str(i+1) os.mkdir(path) print("資料夾" + str(i+1) + "建立成功!")
執行結果如下: