[英]Recursively change directory python
我正在嘗試編寫一個程序,該程序可以根據文件中“關鍵字:”部分之后的每個目錄內的文本文件中出現的某個關鍵字重命名目錄。 所以對於 Case003 下面的 orange.txt 和 cow.txt 文件都包含相同的關鍵字,將重命名它們的父目錄。 這部分很簡單,可以做而不是我現在需要的,但是目錄結構使我難以實現這一點。 這是目錄結構
Project_Folder
├── Case001
│ └── asdf422345112323423
│ └── puppy.txt
├── Case002
│ ├── jjasdfjtnqn3881847471
│ │ └── apple.txt
│ └── jtnjjqjqjwkwktjjthqj
│ └── banana.txt
└── Case003
└── asdfasdfntjejqk21244
├── herwerhqkethf4443434
│ ├── orange.txt
│ └── cow.txt
└── jdjdjafjejqjqyttjdjak
└── cat.txt
我想我需要在這里使用os.walk
,但我正在努力解決如何使它只更改父目錄的名稱,因為os.walk
的生成器包含傳遞的目錄中的所有目錄和子目錄到os.walk
。 有沒有一種只調用包含.txt
文件的父目錄的好方法?
如果這有助於澄清事情,對於 Case003,假設文本文件中的 Keyword 是各自父目錄中的Plane
和Island
,代碼的輸出將如下所示。
└── Case003
└── asdfasdfntjejqk21244
├── Plane
│ ├── orange.txt
│ └── cow.txt
└── Island
└── cat.txt
(使用 Visual Studio 的 ASCII 樹生成器創建的樹圖,可在此處找到
當您使用walk
遍歷目錄樹時,您始終可以使用整個路徑。 例如,當您打開orange.txt
,您可以訪問完全限定路徑Project_Folder/Case003/asdfasdfntjejqk21244/herwerhqkethf4443434/orange.txt
。 您需要做的就是處理這個字符串。 去掉文件名及其父目錄,剩下的就是需要重命名的目錄的名稱。
你能從那里拿走嗎?
查看os.walk
的文檔。 它返回一個生成 3 元組(dirpath, dirnames, filenames)
。 它將遞歸遍歷所有子目錄,因此您只需要查看文件名。
如果您發布您在 OP 中嘗試過的代碼,我們會更好地與您合作。
import os
for dirpath, dirnames, filenames in os.walk('Project Folder'):
# check the files for the keyword that you want to rename the parent to
if filenames:
for f in filenames:
# read the txt file and get the keyword
# rename the parent directory based on the keyword
filepath = os.path.join(dirpath, f)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.