iT邦幫忙

0

Python學習筆記:os模組、glob模組、shutil模組應用於檔案及目錄操作

本文同步發表於小弟自架網站:微確幸資訊站

import os
# 取得目前工作目錄
c_dir = os.getcwd()
c_dir

'D:\DATA\Python data\9自我學習\20220808測試'

# "o"為開啟,"w"為新增檔案,"a"為append模式加到檔案最後面
# 新建 test.txt的檔案,如果沒這個檔案就新建
f = open('test.txt', 'w')
# 檔案寫入"123",並關閉檔案
f.write('123')
f.close()
# 批次建立檔案,建議以with open方式建立檔案,才沒有關檔的問題
for i in range(1, 4):
    with open(f'測試檔案{i}.txt', 'w') as f:
        print(f'正在建立測試檔案{i}.txt')
print(c_dir)

正在建立測試檔案1.txt
正在建立測試檔案2.txt
正在建立測試檔案3.txt
D:\DATA\Python data\9自我學習\20220808測試

import glob
files = glob.glob('測試檔案*.*')
files

['測試檔案1.txt', '測試檔案2.txt', '測試檔案3.txt']

# 刪除所有「測試檔案*.txt」
for f in files:
    if os.path.exists(f):
        os.remove(f)
        print(f'檔名:{f} 已刪除')

檔名:測試檔案1.txt 已刪除
檔名:測試檔案2.txt 已刪除
檔名:測試檔案3.txt 已刪除

# 批次建立目錄及子目錄,目標如下:

# (base) D:\DATA\Python data\9自我學習\20220808測試>tree/f
# 列出磁碟區 DATA 的資料夾 PATH
# 磁碟區序號為
# D:.
# ├─A第一層目錄
# │  ├─A-1第二層子目錄
# │  └─A-2第二層子目錄
# └─B第一層目錄
#     ├─B-1第二層子目錄
#     └─B-2第二層子目錄
w_dir = os.getcwd()
w_dir

'D:\DATA\Python data\9自我學習\20220808測試'

for x in ['A', 'B']:
    os.makedirs(f'{x}第一層目錄')
    for y in range(1, 3):
        os.makedirs(f'{x}第一層目錄/{x}-{y}第二層子目錄')
# 列出所有的目錄及子目錄
[x[0] for x in os.walk(w_dir)]

['D:\DATA\Python data\9自我學習\20220808測試',
'D:\DATA\Python data\9自我學習\20220808測試\.ipynb_checkpoints',
'D:\DATA\Python data\9自我學習\20220808測試\A第一層目錄',
'D:\DATA\Python data\9自我學習\20220808測試\A第一層目錄\A-1第二層子目錄',
'D:\DATA\Python data\9自我學習\20220808測試\A第一層目錄\A-2第二層子目錄',
'D:\DATA\Python data\9自我學習\20220808測試\B第一層目錄',
'D:\DATA\Python data\9自我學習\20220808測試\B第一層目錄\B-1第二層子目錄',
'D:\DATA\Python data\9自我學習\20220808測試\B第一層目錄\B-2第二層子目錄']

# 列出所有的目錄及子目錄
[x[0] for x in os.walk(w_dir)][:]

['D:\DATA\Python data\9自我學習\20220808測試',
'D:\DATA\Python data\9自我學習\20220808測試\.ipynb_checkpoints',
'D:\DATA\Python data\9自我學習\20220808測試\A第一層目錄',
'D:\DATA\Python data\9自我學習\20220808測試\A第一層目錄\A-1第二層子目錄',
'D:\DATA\Python data\9自我學習\20220808測試\A第一層目錄\A-2第二層子目錄',
'D:\DATA\Python data\9自我學習\20220808測試\B第一層目錄',
'D:\DATA\Python data\9自我學習\20220808測試\B第一層目錄\B-1第二層子目錄',
'D:\DATA\Python data\9自我學習\20220808測試\B第一層目錄\B-2第二層子目錄']

import glob
target_dir = glob.glob('*/*')
target_dir

['A第一層目錄\A-1第二層子目錄',
'A第一層目錄\A-2第二層子目錄',
'B第一層目錄\B-1第二層子目錄',
'B第一層目錄\B-2第二層子目錄']

# 在所有的第二層子目錄中,建立test1.txt、test2.txt檔案,目錄如下:

# 列出磁碟區 DATA 的資料夾 PATH
# 磁碟區序號為 0000-4823
# D:.
# 
# ├─A第一層目錄
# │  ├─A-1第二層子目錄
# │  │      test1.txt
# │  │      test2.txt
# │  │
# │  └─A-2第二層子目錄
# │          test1.txt
# │          test2.txt
# │
# └─B第一層目錄
#     ├─B-1第二層子目錄
#     │      test1.txt
#     │      test2.txt
#     │
#     └─B-2第二層子目錄
#             test1.txt
#             test2.txt

for i in target_dir:
    for j in range(1, 3):
        with open(f'{i}\\test{j}.txt', 'w') as f:
            print(f'{i}\\test{j}.txt檔案已建立')

A第一層目錄\A-1第二層子目錄\test1.txt檔案已建立
A第一層目錄\A-1第二層子目錄\test2.txt檔案已建立
A第一層目錄\A-2第二層子目錄\test1.txt檔案已建立
A第一層目錄\A-2第二層子目錄\test2.txt檔案已建立
B第一層目錄\B-1第二層子目錄\test1.txt檔案已建立
B第一層目錄\B-1第二層子目錄\test2.txt檔案已建立
B第一層目錄\B-2第二層子目錄\test1.txt檔案已建立
B第一層目錄\B-2第二層子目錄\test2.txt檔案已建立

# 列出所有含「子目錄」關鍵字的目錄
my_dir = glob.glob('*\\*子目錄')
my_dir

['A第一層目錄\A-1第二層子目錄',
'A第一層目錄\A-2第二層子目錄',
'B第一層目錄\B-1第二層子目錄',
'B第一層目錄\B-2第二層子目錄']

# 千萬要小心操作
# 千萬要小心操作
# 千萬要小心操作

# 將「子目錄」關鍵字的目錄刪除,就算目錄中有檔案,一樣刪除
import shutil
for d in my_dir:
    shutil.rmtree(d)
    print(f'目錄__{d}  已刪除')

目錄__A第一層目錄\A-1第二層子目錄 已刪除
目錄__A第一層目錄\A-2第二層子目錄 已刪除
目錄__B第一層目錄\B-1第二層子目錄 已刪除
目錄__B第一層目錄\B-2第二層子目錄 已刪除


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言