1. 程式人生 > 其它 >Python實驗報告——第10章 檔案及目錄操作

Python實驗報告——第10章 檔案及目錄操作

例項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) + "建立成功!")

 執行結果如下: