在 Python 中重命名文件:WindowsError: [错误 2] 系统找不到指定的文件

Posted

技术标签:

【中文标题】在 Python 中重命名文件:WindowsError: [错误 2] 系统找不到指定的文件【英文标题】:rename files in Python: WindowsError: [Error 2] The system cannot find the file specified 【发布时间】:2014-02-13 08:04:19 【问题描述】:

我看过这里的代码,看起来并不难。

Can't resolve WindowsError: [Error 2] The system cannot find the file specified

但是,它不适用于我的情况。我在这里对 Python 很陌生。我正在重命名文件夹而不是文件。然后这些文件夹中的每一个都有一些需要重命名的文件。

这是我目前在重命名目录中的文件夹时所做的:

import os
from os import rename, listdir

path = r"E:\myFolder"
dirList = os.listdir(path)
print str(dirList)

for name in dirList:
    nameOrig = (name[0:(len(name)-12)])
    nameRename = nameOrig + "City"
    os.rename((os.path.join(path, nameOrig), os.path.join(path, nameRename))

非常感谢

【问题讨论】:

如果在第 6 行没有打印语句的情况下出现错误消息,我会怀疑您没有名为 E:\myFolder 的文件夹。你有吗? 或者你的重命名没有使用文件的实际名称,所以我预计它会失败。请注意,对于名为 foo456789012345 的文件,重命名调用会尝试将 E:\myFolder\foo 重命名为 E:\myFolder\fooCity 在最后一行,您不应该使用 name 而不是 nameOrig 吗? 【参考方案1】:

1) 我不确定(name[0:(len(name)-12)]) 在做什么...name 应该是要重命名的目录本身的名称,我推断它是nameOrig

2) os.rename((os.path.join(path, nameOrig), os.path.join(path, nameRename)) 有不平衡的括号。错别字?

如果我从 rename 函数调用的开头删除一个打开的括号,这适用于重命名目录中的内容。并设置nameOrig = name

*注意,我使用的是 Linux 版本的 Python,它可能会或可能不会以不同方式处理 dir 列表中的结果

【讨论】:

【参考方案2】:

非常感谢您的帮助。 Jim 是对的,我需要在最后一行使用“name”而不是“nameOrig”。并感谢 Ryan J 抓住了额外的父母

上面写着的那一行

nameOrig = (name[0:(len(name)-12)])

假设取出最后 12 个字符并用新名称替换它。在这种情况下,它是“城市”

所以我将文件夹名称命名为

031_印第安纳波利斯 032_印第安纳波利斯 033_印第安纳波利斯 034_印第安纳波利斯 ...等等...

我改为 031_城市 032_城市 033_城市 034_城市 ....

这是最终代码:

导入操作系统 from os import rename, listdir

路径 = r"E:\myFolder" dirList = os.listdir(路径) 打印 str(dirList)

对于 dirList 中的名称: nameOrig = (name[0:(len(name)-12)]) nameRename = nameOrig + "城市" os.rename(os.path.join(path, name), os.path.join(path, nameRename))

print "/n 全部处理"

【讨论】:

以上是关于在 Python 中重命名文件:WindowsError: [错误 2] 系统找不到指定的文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中重命名文件:WindowsError: [错误 2] 系统找不到指定的文件

在Python中重命名目录中的多个文件[重复]

在 Python 中重命名 ZipFile

tkinter 是不是在 Python 3.9.0b3 中重命名?

在 Python 3 中重命名了哪些 tkinter 模块?

在 spark python 中重命名数据框列