2017-01-03 106 views
1

我有一个需要重命名的PDF文件(图形)文件夹。使用Python重命名文件,使用Excel中的名称映射

文件名都是格式“x-xxxxx-xxx-xx-xx-xxx-xx-xxx-xxx-xxxxxx”,其中x是数字或字母。

我有一个excel表,列'A',然后在列'B'列出这些文件我有格式为“yy-yyyyyy-yyy”的每行所需的新名称,y是数字或字母。

我想做的是使用Python(优选Python 3中),从而使“Y”的名字是先用之间的隔膜后所附的“x”名来重命名文件,

即 “yy-yyyyyy-yyy -x-xxxxx-xxx-xxx-xxx -x-xxx-xxx-xxx-xxxxxx”

我在猜测熊猫会被用来与Excel文件进​​行交互?

任何人都可以帮忙吗?

我对Python比较新,所以需要了解所需步骤的细分和解释。

编辑:我试了下面的代码是从一个旧帖子Jesse Lopez这是类似的。

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) 

我明白了第一部分,但引用key1和key2的两行我不明白。我假设方括号将字符串“切分”为多个部分,但不确定术语。之后,我相信一个新的字符串放在一起,他们的文件用shutil命令重命名。

编辑:感谢您的帮助lbellomo,我曾尝试使用它,并得到尽可能将数据加载到datatframe(我使用Spyder的,所以我可以看到数据读取)。但是在iterrows行中,我收到一个错误,说错误的语法和一个指向df.iterrows()冒号后面空格的胡萝卜符号:我之后没有空格,并且无法弄清楚为什么我会收到错误。

+1

你试过了吗?把代码放在问题中,以便我们帮助! – Lucas

回答

0

我假设你可以读取数据帧并有两列(旧名称是第一个和第二个)。此外,要重命名的文件位于相同的目录中。

对于我要创建这个测试数据框的例子:

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) 

希望这能帮助你!