簡體   English   中英

從文件夾路徑中讀取特定文件夾的名稱 Python

[英]Read specific folder's name from folder's path Python

我正在嘗試從文件路徑中讀取特定位置的文件夾名稱。 我當前的代碼:

import os

# search for and input multiple files 
def get_files(source):
    matches = []
    for root, dirnames, filenames in os.walk(source):
        for filename in filenames:
            matches.append(os.path.join(root, filename))
    return matches

def parse(files):
    for file in files:
        xml_information = {}
        metadata = []
        # Get the file path
        filepath = os.path.dirname(file)
        xml_information['file_path'] = '%s' % filepath
        
        # Get customer name
        customer = filepath.split("\\")[5]
        xml_information['customer_name'] = '%s' % customer
        metadata.append(xml_information)
        print(metadata)

path = 'C:\\Users\\quan.nguyen\\SAGE\\Lania Thompson - Searching Project Files'

parse(get_files(path))

我的程序搜索文件夾並找到文件並報告它們的文件夾路徑。 但是,我想讀取文件夾路徑以及第六位的文件夾名稱,即客戶名稱。 當我運行customer = filepath.split("\\")[5]它報告錯誤:

Traceback (most recent call last):
  File "*hidden*", line 33, in <module>
    parse(get_files(path))
  File "*hidden*", line 26, in parse
    customer = filepath.split("\\")[5]
               ~~~~~~~~~~~~~~~~~~~~^^^
IndexError: list index out of range

但是,當我使用customer = filepath.split("\\")[4]運行時,程序會運行並讀取path中指定的最后一個文件夾,即 Lania Thompson - Searching Project Files。 結果如下:

[{'file_path': 'C:\\Users\\quan.nguyen\\SAGE\\Lania Thompson - Searching Project Files\\Hazor Ltd\\PCS Mah\\Machine', 'customer_name': 'Lania Thompson - Searching Project Files'}]

我的預期結果是 Hazor Ltd:

[{'file_path': 'C:\\Users\\quan.nguyen\\SAGE\\Lania Thompson - Searching Project Files\\Hazor Ltd\\PCS Mah\\Machine', 'customer_name': 'Hazor Ltd'}]

除了我的名字以外,名字都是虛構的

所以我已經使用 pathlib 庫編寫了代碼。 代碼是:

import os
from pathlib import Path

# search for and input multiple files 
def get_files(source):
    matches = []
    for root, dirnames, filenames in os.walk(source):
        for filename in filenames:
            matches.append(os.path.join(root, filename))
    return matches

def parse(files):
    for file in files:
        xml_information = {}
        metadata = []
        # Get the file path
        filepath = os.path.dirname(file)
        
        # Get customer name
        p = Path(filepath)
        files = [f for f in p.rglob('*') if f.is_file()]

        for f in files:
            xml_information['Customer'] = f.parts[5]
        metadata.append(xml_information)
        print(metadata)

path = 'C:\\Users\\quan.nguyen\\SAGE\\Lania Thompson - Searching Project Files'

parse(get_files(path))

xml_information['Customer'] = f.parts[5]中的數字[5]更改為您要從中獲取文件夾名稱的位置。

暫無
暫無

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

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