【问题标题】:Python 3: Error while executing os.rename()Python 3:执行 os.rename() 时出错
【发布时间】:2021-03-25 22:16:05
【问题描述】:

我正在尝试使用此代码重命名文件:

def rename_files(src: str,dst: str, folder_name: str):
    filepath = f"temp/{src}"
    filepath = filepath.replace("/", "\\")
    cwd = os.getcwd()
    old_path = os.path.join(cwd, filepath)
    newfilepath = f"folder/{folder_name}/{dst}.pdf"
    newfilepath = newfilepath.replace("/", "\\")
    new_path = os.path.join(cwd, newfilepath)
    if os.path.exists(old_path):
        os.rename(old_path, new_path)
    else:
        print("File does not exist")

执行时出现如下错误:

FileNotFoundError: [WinError 3] The system cannot find the path specified: 'E:\\Repos\\GitHub\\source\\t2dm\\temp\\oldfilename.pdf' -> 'E:\\Repos\\GitHub\\source\\t2dm\\folder\\subfolder\\newfilename.pdf'

代码正在执行:

E:\Repos\GitHub\source\t2dm\

文件oldfilename.pdf存在于E:\Repos\GitHub\source\t2dm\temp\中,folder\subfolder也存在。

如何解决这个问题?

编辑:添加了有关folder\subfolder 的更多信息。

【问题讨论】:

    标签: python windows file rename


    【解决方案1】:

    如果新文件夹folder_name 不存在,os.rename 将不会创建它。

    您可以执行以下操作之一:

    1. 在您的代码行中使用os.renames()(注意s),而不是os.rename - 如果目标目录尚不存在,它将为目标创建目录。

    2. 使用os.makedirs() 为子文件夹创建目录树。

    如果您不创建多个目录树,那么选项 (1) 是您的理想选择。

    【讨论】:

    • 非常感谢您快速详细的回复!新文件夹确实存在。这就是为什么我无法理解发生了什么。
    • 那么您的帖子中缺少信息。如果 source 和 dest 文件夹存在并且源 pdf 存在,这应该不会失败。您帖子中的代码是否与您正在执行的代码完全相同?复制错误消息中的两个路径并在 Windows 文件资源管理器中打开每个路径。还要检查您是否拥有必要的权限,如果它是外部驱动器或网络共享。无能为力。
    • 不,我解决了错误。新文件名有问题。当我用其他东西测试代码时,它立即工作。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 2020-08-09
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 2020-04-13
    相关资源
    最近更新 更多