Python 从数据帧重命名目录中的文件
我在一个目录中有一堆pdf文件,我需要在文件名的前面添加一个特定的ID。我有一个csv,其中包含映射到我要更新到的名称的当前名称。我在这里找到了一些线程,并尝试使用代码,但不幸的是,我只能得到要更新的第一个文件名 df的设置与下面类似-文件将是当前名称,更新是我试图更新它的内容Python 从数据帧重命名目录中的文件,python,Python,我在一个目录中有一堆pdf文件,我需要在文件名的前面添加一个特定的ID。我有一个csv,其中包含映射到我要更新到的名称的当前名称。我在这里找到了一些线程,并尝试使用代码,但不幸的是,我只能得到要更新的第一个文件名 df的设置与下面类似-文件将是当前名称,更新是我试图更新它的内容 file update aaa - bbb - 2020 1001_aaa - bbb - 2020 aaa - ccc - 2020 2212_aaa - ccc - 2020
file update
aaa - bbb - 2020 1001_aaa - bbb - 2020
aaa - ccc - 2020 2212_aaa - ccc - 2020
aaa - ddd - 2020 3133_aaa - ddd - 2020
下面的代码将按预期更新第一个,但循环不会继续
file_path = "OneDrive/Desktop/Hello/Mapping.csv"
df= pd.read_csv(file_path)
df.head()
path = r'OneDrive\Desktop\Hello\Forms'
onlyfiles = [f for f in listdir(path) if isfile(join(path, f))]
#print(onlyfiles)
currentfilename= onlyfiles[0].split(".pdf")
#print(currentfilename)
for i in range(3):
#print(currentfilename,df['file'][i])
if str(currentfilename)==str(df['file'][i]):
corrosponding_id=df['update'][i]
print(path+"\\"+corrosponding_email)
rename(path+"\\"+str(currentfilename)+".pdf",path+"\\"+corrosponding_id+".pdf")
任何帮助都将不胜感激
谢谢大家! 迭代数据帧并重命名
import os
file_path = "OneDrive/Desktop/Hello/Mapping.csv"
folder = r'OneDrive/Desktop/Hello/Forms'
df = pd.read_csv(file_path)
for row in df.itertuples():
original_file_path = os.path.join(folder, row.file, '.pdf')
new_file_path = os.path.join(folder, row.update, '.pdf')
os.rename(original_file_path, new_file_path)
我明白问题所在。您正在执行currentfilename=onlyfiles[0]。拆分(“.pdf”), 这将导致currentfilename仅等于第一个文件,但在代码中只需切换以下内容:(注意缩进和更改的行)
你有什么错误吗?另外,您给出的代码需要缩进
if
语句,请更新格式。现在,Python会抛出一个缩进错误。谢谢你的帮助-我试图运行代码,当我运行行-currentfilename=[file.split(“.pdf”)时,遇到了这个错误,该行只包含文件[0]。“文件”,“第18行”重命名(path+“\\”+str(currentfilename[I])+“.pdf”,path+“\\”+corresponding\u id+“.pdf”)^SyntaxError:解析“Hey@HillaryManich--抱歉,我以为我对我的原始帖子进行了编辑(因为有一个打字错误),但我想它们没有保存。请尝试运行我现在已有的代码
file_path = "OneDrive/Desktop/Hello/Mapping.csv"
df= pd.read_csv(file_path)
df.head()
path = r'OneDrive\Desktop\Hello\Forms'
onlyfiles = [f for f in listdir(path) if isfile(join(path, f))]
#print(onlyfiles)
currentfilename= [file.split(".pdf") for file in onlyfiles] # CHANGED
#print(currentfilename)
for i in range(3):
#INDENTED
#print(currentfilename[i],df['file'][i])
if str(currentfilename[i])==str(df['file'][i]):
corrosponding_id=df['update'][i]
print(path+"\\"+corrosponding_email)
rename(path+"\\"+str(currentfilename[i])+".pdf",path+"\\"+corrosponding_id+".pdf")