簡體   English   中英

遞歸更改目錄python

[英]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 是各自父目錄中的PlaneIsland ,代碼的輸出將如下所示。

    └── 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM