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.
我正在研究如何将 id1.asp
重命名为 pen.asp
,将 id2.asp
重命名为 rubber.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 Reader to read the filenames and create a dictionary mapping of id to new file name. Then you can use os.listdir() with os.path.splitext() and 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()
重命名文件。如果不是,则打印未知文件。
我正在尝试编写一个脚本,将 asp 文件块重命名为正确的名称。
目前我有一个文件夹,里面有 asp 个文件,这些文件被命名为 id1.asp、id2、asp 等等。
我有一个 CSV 文件,其中包含 ID 和该 ID 的描述。
id1, pen
id2, rubber
id3, paper
etc.
我正在研究如何将 id1.asp
重命名为 pen.asp
,将 id2.asp
重命名为 rubber.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 Reader to read the filenames and create a dictionary mapping of id to new file name. Then you can use os.listdir() with os.path.splitext() and 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()
重命名文件。如果不是,则打印未知文件。