为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星coding 2022-06-02 11:29:52
免责声明,我对编码和 python 非常陌生,因此为初学者提供响应会很棒。我基本上是在尝试通过调用 CSV 文件中的特定值来重命名目录。我可以打印出我想要的新名称。一旦我添加了 os.rename(src, dst) 函数,我就会得到错误FileNotFoundError: [Errno 2] 没有这样的文件或目录...是的,我已经三次检查了文件路径是否有错别字和错误。我已在简化版本中成功使用此代码,而无需尝试从 csv 重命名。import os, csvos.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 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

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



查看完整回答
反对 回复 2022-06-02
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

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


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)


查看完整回答
反对 回复 2022-06-02
  • 2 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信