我正在尝试编写一个程序,该程序允许我使用excel电子表格重命名文件,并且不断出现相同的错误消息。我非常感谢您的帮助。错误是:
ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
这是我当前的代码:
import os
import pandas as pd
os.chdir('C:\\Users\\sferrier\\Desktop\\Test 1')
xl = pd.read_excel('rename_test.xlsx')
df = pd.DataFrame(xl, columns=["Orginal File Name","New File Name"])
for file in os.listdir():
if file == df["Orginal File Name"]:
os.rename(file, df["New File Name"])
else:
print(file + "was not renamed")
答案 0 :(得分:1)
构造df
后再试一次:
for x in df.values.tolist():
os.rename(x[0], x[1])
或者如果您喜欢显式变量名:
for index, row in df.iterrows():
os.rename(row["Orginal File Name"], row["New File Name"])
答案 1 :(得分:0)
问题出在这个区块
for file in os.listdir():
if file == df["Orginal File Name"]:
os.rename(file, df["New File Name"])
else:
print(file + "was not renamed")
具体地说,在这一行-
if file == df["Orginal File Name"]:
此行的问题是变量file
是单个字符串,而df["Orginal File Name"]
是整个列。因此,从本质上讲,您正在尝试将单个字符串与包含一整串字符串的数组进行比较。
要解决此问题,您可以像这样遍历行
for file in os.listdir():
for index, row in df.iterrows():
os.rename(row["Orginal File Name"], row["New File Name"])
编辑
OP获取的FileNotFoundError
可能是因为数据框中存在一个文件名,该文件名实际上不存在于目录中。您可以运行以下代码段
for file in os.listdir():
for index, row in df.iterrows():
try:
os.rename(row["Orginal File Name"], row["New File Name"])
except:
print(row["Orginal File Name"])
即使该文件不存在于目录中,该块也可以使您继续前进,并打印出不存在的文件名。