使用Excel中的名称映射,使用Python重命名文件
我有一个需要重命名的PDF文件(图纸)文件夹 文件名的格式均为“x-xxxxx-xxx-xx-xx-xxx-xx-xxx-XXXX-xxxxxx”,x为数字或字母 我有一张excel表格,在“A”列中列出了这些文件,然后在“B”列中,我有每行所需的新名称,格式为“yy-yyyyyy-yyy”,y是数字或字母 我想做的是使用Python(最好是Python 3)重命名文件,以便“y”名称首先是“x”名称,然后是分隔符 i、 e。 “yyy-YYYYY-yyy--x-xxxxx-xxx-xx-xx-xxx-xx-xxx-xxxxx” 我猜熊猫会被用来与Excel文件交互 有人能帮忙吗 我对Python比较陌生,所以如果您能详细介绍一下所需的步骤,我将不胜感激 编辑:我尝试了以下代码,这些代码来自一篇类似的旧文章使用Excel中的名称映射,使用Python重命名文件,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个需要重命名的PDF文件(图纸)文件夹 文件名的格式均为“x-xxxxx-xxx-xx-xx-xxx-xx-xxx-XXXX-xxxxxx”,x为数字或字母 我有一张excel表格,在“A”列中列出了这些文件,然后在“B”列中,我有每行所需的新名称,格式为“yy-yyyyyy-yyy”,y是数字或字母 我想做的是使用Python(最好是Python 3)重命名文件,以便“y”名称首先是“x”名称,然后是分隔符 i、 e。 “yyy-YYYYY-yyy--x-xxxxx-xxx-xx-xx-
import pandas
import shutil
IdMapping = pandas.io.excel.read_excel('IdMapping.xlsx', 'sheet1')
for r in master:
key1 = r.split('.')[3]
key2 = r.split('.')[4][-2:]
old = 'ASSET MOVEMENT %s %s' % (key1, key2)
new = r
shutil.move(old, new)
我理解第一部分,但我不理解涉及键1和键2的两行。我假设方括号将字符串“切分”为多个部分,但不确定术语。在那之后,我相信一个新的字符串被放在一起,并使用shutil命令重命名文件
编辑:感谢lbellomo的帮助,我已经尝试过使用它,并将数据加载到datatframe中(我使用spyder以便可以看到数据已被读取)。但是在iterrows行中,我遇到一个错误,语法不正确,并且在df.iterrows()上有一个胡萝卜符号指向冒号后面的空格:后面没有空格,我无法理解为什么会出现错误。我假设您可以读取数据帧并有两列(其中旧名称是第一列,第二列是第二列)。此外,要重命名的文件也位于同一目录中 对于这个示例,我将创建以下测试数据帧:
data = [{"colum A": "old name 1", "colum B": "new name 1"},
{"colum A": "old name 2", "colum B": "new name 2"},
{"colum A": "old name 3", "colum B": "new name 3"}]
df = pd.DataFrame(data=data)
我们所做的:迭代数据帧的行,读取旧名称和新名称(新名称加上旧名称),打印它,最后更改文件名
for row in df.iterrows():
old_name = row[1][0]
new_name = row[1][1] + ' -- ' + old_name
print("Old name: ", old_name, " New name: ", new_name)
shutil.move(old, new)
希望这能帮助你 我假设您可以读取数据帧并拥有两列(其中旧名称为第一列,第二列为第二列)。此外,要重命名的文件也位于同一目录中 对于这个示例,我将创建以下测试数据帧:
data = [{"colum A": "old name 1", "colum B": "new name 1"},
{"colum A": "old name 2", "colum B": "new name 2"},
{"colum A": "old name 3", "colum B": "new name 3"}]
df = pd.DataFrame(data=data)
我们所做的:迭代数据帧的行,读取旧名称和新名称(新名称加上旧名称),打印它,最后更改文件名
for row in df.iterrows():
old_name = row[1][0]
new_name = row[1][1] + ' -- ' + old_name
print("Old name: ", old_name, " New name: ", new_name)
shutil.move(old, new)
希望这能帮助你 你试过了?在问题中添加代码,以便我们可以提供帮助!你试过了?在问题中添加代码,以便我们可以提供帮助!