【问题标题】:"WinError 123 The filename, directory name, or volume label syntax is incorrect:" When calling os.rename“WinError 123 文件名、目录名或卷标语法不正确:”调用 os.rename 时
【发布时间】:2021-01-07 19:55:02
【问题描述】:

我正在编写一个脚本,将 torrent 文件夹重命名为更具可读性的内容... 在某些情况下,我会收到上述错误。

我真的不知道出了什么问题。 我试过了: os.listdir().sort() == originalFolderNames.sort(): 结果是真的,所以我要重命名的内容和目录中的内容匹配 100%。

这是导致此问题的代码:

def renameFolders(self, oldAndNewFolderNames):
    foldersToRename = oldAndNewFolderNames[1]
    originalFolderNames = oldAndNewFolderNames[0]
    dirList = os.listdir()

    #  Rename folders
    for d in dirList:
        for i in range(len(foldersToRename)):
            if d == foldersToRename[i]:
                try:
                    if foldersToRename[i] != "None":
                        os.rename(r"{}".format(str(originalFolderNames[i])), r"{}".format(str(foldersToRename[i])))
                except Exception as Err:
                    print(Err)
                    print("Couldn't rename: {} TO ==> {}".format(originalFolderNames[i], foldersToRename[i]))
                    break

    return print("Done!")

The error always occurs on the same two folders others work fine.

我真的希望有人可以帮助我解决这个问题。其他出现类似错误的代码包含非法字符或未输入原始字符串,因此“\”之类的内容会导致异常。我认为我的脚本不是这种情况。
Tnx。

【问题讨论】:

  • OSError 在底层操作系统(内核)系统调用失败并返回错误时在 Python 中引发。这里的问题应该是您的目标名称,因为 Windows 对可以或不能在路径名中使用的字符比较挑剔......这里不允许使用 ? 和 :,因此无法将文件重命名为这些目标。
  • @OndrejK。 omg ... tnx 太多了,我忘记了文件夹的新名称可能是错误的,因为我太专注于原始目录名称有问题。再次为这个答案 Tnx。

标签: python python-3.x operating-system rename


【解决方案1】:

文件名不能有非法字符。 linux和windows的非法字符列表(linux上只有“/”是非法的)

forbiddenChars = [">", "<", "/", ":" '"', "\\", "|", "?", "*"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2021-04-11
    • 2020-03-24
    • 2020-07-30
    • 2017-05-27
    • 2020-04-08
    • 1970-01-01
    相关资源
    最近更新 更多