【问题标题】:Windows directory name is invalidWindows 目录名称无效
【发布时间】:2025-12-12 06:35:02
【问题描述】:

这是我正在尝试的代码,但它不断重复相同的错误。 如果我做错了什么,请告诉我。

import os
import sys

for x in sys.argv:
    for ff in os.listdir(x):
        path = os.path.join(x, ff)
        if os.path.isdir(path):
            print('\n--' + path)
        else:
            print('\t------' + path)

这是不断重复的错误,一次又一次,请有人帮助我。

Traceback (most recent call last):
  File "E:/projects/Intern/file&folders/cc.py", line 5, in <module>
    for ff in os.listdir(x):
NotADirectoryError: [WinError 267] The directory name is invalid: 'E:/projects/Intern/file&folders/cc.py'

【问题讨论】:

  • 运行脚本时传递的参数是什么?
  • 您必须使用反斜杠而不是正斜杠来表示 Windows 中的目录。将 E:\projects\Intern\file&folders\cc.py 作为参数传递,看看会发生什么。

标签: python python-3.x command-line


【解决方案1】:

使用以下代码:-

import os
import sys

for x in sys.argv[1:]:
    for ff in os.listdir(x):
        path = os.path.join(x, ff)
        if os.path.isdir(path):
            print('\n--' + path)
        else:
            print('\t------' + path)

您将整个 sys.argv 列表传递给 os.listdir() 函数。第一个元素始终是脚本本身,它不是目录。因此,我们按第一个元素对参数列表进行切片。

【讨论】:

    【解决方案2】:

    几年前我在 Windows 机器上遇到过类似的错误。我认为问题在于您的路径包含一个特殊字符(&)...只需更改文件夹的名称或使用退格键对其进行转义

    【讨论】:

      【解决方案3】:

      我认为问题可能是某些路径包含的字符 &amp; 没有得到很好的支持。
      尝试更改该文件夹名称并避免使用此类字符,或尝试跳过可能包含它的路径。

      【讨论】: