读取 csv 文件以重命名并移动到新的(变量)路径

问题描述 投票:0回答:1

我的子目录中有数百个文件需要重命名,然后移动到 csv 列中指定的新位置(路径取决于 ID 和参考 ID)。我需要首先在原始位置重命名文件,因为有些文件可能具有相同的文件名(例如 new_reqest_11_02_01.pdf)。

当前结构+文件名:

A/new_reqest_11_02_01.pdf

B/new_reqest_11_02_01.pdf

B/new_reqest_11_03_01.pdf

所需结构+文件名:

A/123456/A_F_11_02_01.pdf

B/123964/B_R_11_02_01.pdf

B/158964/B_G_11_02_01.pdf

文件名和路径将使用 csv 中的列创建:

客户 请求ID 旧文件名 类型 日期
A 123456 new_reqest_11_02_01.pdf F 11_02_01
B 123964 new_reqest_11_03_01.pdf R 11_02_01

我可以移动所有文件并重命名它们,但这不起作用,因为同名的文件被覆盖。我已经尝试从另一个问题(成功)创建目录树,但是对 csv 列的引用来重命名文件并创建新路径却难住了我。

import os
import csv

with open('C:\\Users\\me\\Desktop\\Testing\\Rename_Refile.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter = ',')
    header = next(readCSV)
    for row in readCSV:
        dirname = "/".join((row[0], row[1], row[2]))
        if not os.path.exists(dirname):
            os.makedirs(dirname)

我尝试将其他东西混在一起。跨 stackoverflow 的代码,但它太脱节了,我无法找到有关使用 csv 列更改文件路径的问题。

如有任何帮助,我们将不胜感激!

path move subdirectory file-rename read-csv
1个回答
0
投票

经过更多实验,我从另一个问题修改了以下代码。

import os
import pandas as pd

df = pd.read_csv("C:\\Users\me\Desktop\Testing\Rename_refile.csv','rb'")
for i, sub_dir in enumerate(df["sub_directories"]):
    old_path = os.path.join("C:\\Users\me\Desktop\Testing\NewDirectory", sub_dir)
    new_path = os.path.join("C:\\Users\me\Desktop\Testing\OldDirectory",df["new_sub_directories"][i])
    old_name = df["OriginalFileName"][i]
    new_name = df["NewFileName"][i] 
    os.rename(os.path.join(old_path, old_name), os.path.join(new_path, new_name))

这会重命名原始子目录中的文件,然后应该将该文件移动到创建的新目录树中的新路径。但我一直得到

FileNotFoundError: [Errno 2] No such file or directory
...

© www.soinside.com 2019 - 2024. All rights reserved.