根据内容重命名excel文件



我试图根据单元格a1的内容重命名文件夹中的excel文件,我使用panda解析文件并存储单元格a1的值,然后使用该值重命名文件。

代码如下:

import os
import pandas as pd
import glob
source_dir = r'C:UsersAhmed_AbdelmuniemDesktopRenameFolder'
file_names = glob.glob(os.path.join(source_dir, '*.xlsx'))
for file_name in file_names:
df1 = pd.read_excel(file_name)
new_name = df1.iat[0,0]
# print (new_name)
file_name.rename(file_name.with_name(new_name))

我得到以下回溯:

C:UsersAhmed_AbdelmuniemAppDataLocalProgramsPythonPython39python.exe C:/Users/Ahmed_Abdelmuniem/PycharmProjects/Renamer/main.py
Traceback (most recent call last):
File "C:UsersAhmed_AbdelmuniemPycharmProjectsRenamermain.py", line 13, in <module>
file_name.rename(file_name.with_name(f"new_name"))
AttributeError: 'str' object has no attribute 'rename'
Process finished with exit code 1

我不知道AttributeError的意思:"str"对象没有属性"rename",因为存储在new_name中的值是str,我用print测试了它。它产生以下结果:

XXX.xlsx
YYY.xlsx

您试图重命名的变量file_name只是一个str,它不包含rename方法。可以使用os.rename重命名文件。请参阅下面的代码。

import os
import pandas as pd
import glob
source_dir = ''
file_names = glob.glob(os.path.join(source_dir, '*.xlsx'))
for file_name in file_names:
df1 = pd.read_excel(file_name)
new_name = df1.iat[0,0]
os.rename(os.path.join(source_dir, file_name), os.path.join(source_dir,new_name+".xlsx"))

最新更新