Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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 基于内容重命名excel文件_Python_Pandas - Fatal编程技术网

Python 基于内容重命名excel文件

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

我试图根据单元格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_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"))