簡體   English   中英

如何提取子文件夾路徑?

[英]How to extract sub-folder path?

我大約有100個文件夾,每個文件夾中的文件都應閱讀和分析。

我可以從子文件夾中讀取文件,但是我想從第10個文件夾開始處理直到結束。 我需要確切的文件夾路徑。

我怎樣才能做到這一點?

為了澄清我的問題,我從代碼中提取了一個示例:

rootDir = 'D:/PhD/result/Pyradiomic_input/'
for (path, subdirs, files) in os.walk(rootDir):        
    sizefile=len(path)
    if "TCGA-" in path :
        print(path)

輸出為:

D:/PhD/result/Pyradiomic_input/TCGA-02-0006
D:/PhD/result/Pyradiomic_input/TCGA-02-0009
D:/PhD/result/Pyradiomic_input/TCGA-02-0011
D:/PhD/result/Pyradiomic_input/TCGA-02-0027
D:/PhD/result/Pyradiomic_input/TCGA-02-0046
D:/PhD/result/Pyradiomic_input/TCGA-02-0069

現在我的問題是如何從D:/PhD/result/Pyradiomic_input/TCGA-02-0046開始直到結束,而不是從頂部開始? 我嘗試了一些想法,但沒有成功。

您可以設置一個標記來捕獲特定目錄時捕獲

rootDir = 'D:/PhD/result/Pyradiomic_input/'
first_folder = 'TCGA-02-0046'

process = False
for (path, subdirs, files) in os.walk(rootDir):        
    sizefile=len(path)
    if "TCGA-" in path :
        print(path)

        if first_folder in path:
            process = True

        if process:
            #process folder

如果要特定的文件夾指示腳本應停止處理

rootDir = 'D:/PhD/result/Pyradiomic_input/'
first_folder = 'TCGA-02-0046'
last_folder = 'TCGA-02-0099'

process = False
for (path, subdirs, files) in os.walk(rootDir):        
    sizefile=len(path)
    if "TCGA-" in path :
        print(path)

        if first_folder in path:
            process = True

        if last_folder in path:
            break

        if process:
            #process folder

您還可以設置要處理的目錄列表

rootDir = 'D:/PhD/result/Pyradiomic_input/'
process_dirs = ['TCGA-02-0046', ...]

process = False
for (path, subdirs, files) in os.walk(rootDir):        
    sizefile=len(path)
    if "TCGA-" in path :
        print(path)

        if any(d in path for d in process_dirs):
            #process folder

您可以簡單地跳過不需要的值。這里有些簡化:

counter = 0

# mocking the file operations
for path in ["/dir-1", "/dir-2", "/dir-3", "/dir-4", "/dir-5"]:
  # skip the first two paths
  if counter < 2:
    counter += 1
    continue

  # do something    
  print(path)

或者,您可以先收集路徑,如下所示:

paths = []

# mocking the file operations
for path in ["/dir-1", "/dir-2", "/dir-3", "/dir-4", "/dir-5"]:
  # collect paths in array
  paths.append(path)

# skip the first two elements
paths = paths[2:]

for path in paths:
  # do something
  print(path)

如果使用生成器表達式,則第二個版本可能會短一些,但我更喜歡可讀性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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