Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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 从数据帧重命名目录中的文件_Python - Fatal编程技术网

Python 从数据帧重命名目录中的文件

Python 从数据帧重命名目录中的文件,python,Python,我在一个目录中有一堆pdf文件,我需要在文件名的前面添加一个特定的ID。我有一个csv,其中包含映射到我要更新到的名称的当前名称。我在这里找到了一些线程,并尝试使用代码,但不幸的是,我只能得到要更新的第一个文件名 df的设置与下面类似-文件将是当前名称,更新是我试图更新它的内容 file update aaa - bbb - 2020 1001_aaa - bbb - 2020 aaa - ccc - 2020 2212_aaa - ccc - 2020

我在一个目录中有一堆pdf文件,我需要在文件名的前面添加一个特定的ID。我有一个csv,其中包含映射到我要更新到的名称的当前名称。我在这里找到了一些线程,并尝试使用代码,但不幸的是,我只能得到要更新的第一个文件名

df的设置与下面类似-文件将是当前名称,更新是我试图更新它的内容

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")