猿问

使用 os.rename 时出现 FileNotFoundError,但在调用打印函数时没有

免责声明,我对编码和 python 非常陌生,因此为初学者提供响应会很棒。我基本上是在尝试通过调用 CSV 文件中的特定值来重命名目录。我可以打印出我想要的新名称。一旦我添加了 os.rename(src, dst) 函数,我就会得到错误


FileNotFoundError: [Errno 2] 没有这样的文件或目录...


是的,我已经三次检查了文件路径是否有错别字和错误。


我已在简化版本中成功使用此代码,而无需尝试从 csv 重命名。


import os, csv


os.chdir("/Users/.../test11")

root = "/Users/.../test11"


for file in os.listdir(): #delete ds_store files b/c they mess up index value

    if file.endswith(".DS_Store"):

        path = os.path.join(root, file)

        os.remove(path)


src = "/Users/.../test11/temp_name" # rename (date/name/index)

csvFilePath = "/Users/.../test11/temp_name/data.csv"

with open(csvFilePath) as csvFile:

    csvReader = csv.DictReader(csvFile)

    for csvRow in csvReader:

        timestamp = csvRow["Timestamp"]

        name = csvRow["First name"]

        for index, folder in enumerate(os.listdir(root), start=1):

            new_folder_name = f"{timestamp}_{name}_{index}"

os.rename(src, new_folder_name)

任何帮助将非常感激。如果有办法让这段代码更高效,纠正不良做法,或者如果有更好的方法,我愿意接受建议!


繁星coding
浏览 189回答 2
2回答

哆啦的时光机

src永远不会改变,但你os.rename会多次(每个循环一次)。它可能存在第一个电话,但绝对不是第二个电话。

德玛西亚99

如果我理解正确,您目前拥有:src = "/Users/.../test11/temp_name"和new_folder_name = f"{timestamp}_{name}_{index}"我会说您缺少路径“/Users/.../test11/”也许这会解决你的问题?new_folder_name = "/Users/.../test11/" + f"{timestamp}_{name}_{index}"def create_path(x):if not os.path.exists(x):    os.makedirs(new_folder_name)os.rename(src, new_folder_name)
随时随地看视频慕课网APP

相关分类

Python
我要回答