Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
遍历文件夹中的文件名并使用Python重命名_Python_Pandas - Fatal编程技术网

遍历文件夹中的文件名并使用Python重命名

遍历文件夹中的文件名并使用Python重命名,python,pandas,Python,Pandas,我有一个包含1000多个文件的文件夹。它们都有不同的名称格式(随着时间的推移,名称格式非常不一致),因此我不能在Python中仅使用replace或split。但我有一张Excel表格,有两列 ShortName FullName Banana 2020 Banana_2020_Fruit.pdf Apple 900 Apple_900_Fruit_v2.pdf Pear 1800 Pear 1800_new.pdf Plum 210 Plum210.pdf

我有一个包含1000多个文件的文件夹。它们都有不同的名称格式(随着时间的推移,名称格式非常不一致),因此我不能在
Python
中仅使用
replace
split
。但我有一张Excel表格,有两列

ShortName     FullName
Banana 2020   Banana_2020_Fruit.pdf
Apple 900     Apple_900_Fruit_v2.pdf
Pear 1800     Pear 1800_new.pdf
Plum 210      Plum210.pdf
如何使用
ShortName
列重写所有文件名

import os
import pandas as pd

myfile = pd.read_excel("filetoexcel.xlsx")

for fileName in os.listdir("C:/Users/name/here/folder"):
   os.rename(fileName, fileName.replace(_____))
这行吗

import pandas as pd
import os
from pathlib import Path as path

df = pd.read_excel(file)
df = df.set_index('ShortName')

folder = path('path/to/your/folder')
for file in folder.iterdir():
    shname = file.stem
    fname = df.loc[shname, 'FullName']
    os.rename(file, folder/path(fname))

您是否已将excel工作表读入python?例如,在python中是否有列表中的(from,to)对、dict等?将excel文件保存为
.csv
以简化此操作是非常常见的。有内置的阅读它们,这可能比Excel格式更容易。它实际上也是一个逗号分隔的文件(每一行都是用逗号分隔的新行),因此您可以使用open()直接读取
,不过请注意文件名中的逗号(保存前可以使用Excel进行搜索)可能会混淆这一点。您看到将Excel文件读入pandas是否有效了吗
pandas.read_excel(“filename.xlsx”)
?在第一个示例中,是否希望文件为
“Banana 2020.pdf”
?我现在导入了excel文件。我还没有列表的字典。FullName是实际的文件名吗?您想将其更改为ShortName吗?我收到一个错误
KeyError:“first\u file\u name\u here”
我文件夹中的第一个文件在该KeyError中给出。您设置了索引吗?您是否打印出file.stem并确保它位于ShortName列中?文件名或excel表格中是否缺少一些空白?在
shname=file.stem
之后,我打印了
print(shname)
,它显示了全名列值。
文件夹:Path
文件夹不可调用
在最后一行,在这种情况下,交换“全名”和“短名”上面代码中的字符串。