Python 基于内容重命名excel文件
我试图根据单元格a1的内容重命名文件夹中的excel文件,我使用pandas解析文件并存储单元格a1的值,然后使用该值重命名文件 代码如下:Python 基于内容重命名excel文件,python,pandas,Python,Pandas,我试图根据单元格a1的内容重命名文件夹中的excel文件,我使用pandas解析文件并存储单元格a1的值,然后使用该值重命名文件 代码如下: import os import pandas as pd import glob source_dir = r'C:\Users\Ahmed_Abdelmuniem\Desktop\RenameFolder' file_names = glob.glob(os.path.join(source_dir, '*.xlsx')) for file_na
import os
import pandas as pd
import glob
source_dir = r'C:\Users\Ahmed_Abdelmuniem\Desktop\RenameFolder'
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:\Users\Ahmed_Abdelmuniem\AppData\Local\Programs\Python\Python39\python.exe C:/Users/Ahmed_Abdelmuniem/PycharmProjects/Renamer/main.py
Traceback (most recent call last):
File "C:\Users\Ahmed_Abdelmuniem\PycharmProjects\Renamer\main.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
您试图重命名的变量
file\u 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"))
非常感谢,它成功了。但是,我不太了解操作系统模块,为什么你的os.rename工作,而我的文件rename不工作?变量
file\u rename
是一个str
,而不是文件本身。您可以对像file\u name='foo'
这样的任意字符串尝试相同的操作,但仍然会得到相同的错误。字符串不包含rename
方法。尝试打印文件名
。与此相反,os
是一个python模块,包含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"))