簡體   English   中英

Python 重命名文件夾中的文件與 CSV 文件中的名稱匹配

[英]Python to rename files in a folder with matching name in CSV file

我正在嘗試編寫一個腳本,它將一個asp文件塊重命名為正確的名稱。

目前我有一個文件夾,其中包含 asp 文件,名稱為 id1.asp、id2、asp 等。

我有一個 CSV 文件,其中包含 ID 和該 ID 的描述。

id1, pen
id2, rubber
id3, paper
etc.

我正在嘗試解決如何將rubber.asp重命名為id1.asp ,將pen.asp重命名為id2.asp等等。

謝謝你。 這是我到目前為止所嘗試的:

import csv
import os
import shutil

a_csv_file = open("skuconvert.csv", "r")
dict_reader = csv.DictReader(a_csv_file)
for row in a_csv_file:
        print (row)

ordered_dict_from_csv = list(dict_reader)[0]
dict_from_csv = dict(ordered_dict_from_csv)

print(dict_from_csv)
dirs = os.listdir('./')

path = ''
head_tail = os.path.split(path)

您可以使用CVS 閱讀器來讀取文件名並創建 id 到新文件名的字典映射。 然后你可以使用os.listdir()os.path.splitext()shutil.move()來重命名你的文件。

您可以使用glob.glob()在文件夾中查找所有 ASP 文件。 首先將 CSV 文件加載為字典(假設有兩列,ID 和名稱)。 如果有更多列或存在 header,則需要以不同方式處理。

import glob
import csv 
import os 
import shutil 

with open("skuconvert.csv") as f_input:
    csv_input = csv.reader(f_input)
    ids = dict(csv_input)

asp_files = glob.glob(r"f:\dropbox\python temp\*.asp")

for asp_file in asp_files:
    path, basename = os.path.split(asp_file)
    filename, ext = os.path.splitext(basename)
    
    if filename in ids:
        new_name = os.path.join(path, f'{ids[filename]}{ext}')
        print(f"Renaming: '{asp_file}' to '{new_name}'")
        
        try:
            shutil.move(asp_file, new_name)
        except:
            print(f"Unable to rename: {new_name}")
    else:
        print(f"ID unknown: {filename}")

然后對於找到的每個 ASP 文件,拆分路徑和擴展名,並確定是否在 CSV 文件中找到了 ID。 如果是,則構建新文件名並調用shutil.move()來重命名文件。 如果不是,則打印未知文件。

暫無
暫無

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

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