使用os.rename时出现FileNotFoundError,但调用打印功能时不发生

时间:2019-09-19 21:20:37

标签: python python-3.x

免责声明,我是编码和python的新手,因此满足初学者的需求将非常棒。我基本上是想通过调用CSV文件中的特定值来重命名目录。我可以打印我想要的新名称。添加os.rename(src,dst)函数后,我立即收到错误消息

  

FileNotFoundError:[错误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)

任何帮助将不胜感激。如果有办法使此代码更有效,请纠正错误的做法,或者有更好的方法,我欢迎您提出建议!

2 个答案:

答案 0 :(得分:1)

src从未更改,但您os.rename多次(每个循环一次)。它可能在第一个电话中就已经存在,但肯定在第二个电话中不存在。

答案 1 :(得分:0)

如果我理解正确,您当前拥有:

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)