os.listdir
当您在不引用现有路径的路径上使用时会发生此错误。
例如:
>>> os.listdir('Some directory does not exist')
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
WindowsError: [Error 3] : 'Some directory does not exist/*.*'
如果要使用os.listdir
,则需要保证要使用的路径存在,或者os.path.exists
先使用 来检查存在。
if os.path.exists('/client_side/'):
do something
else:
do something
假设您当前的工作目录是c:\foobar
,os.listdir('/client_side/')
等价于os.listdir('c:/client_side')
, whileos.listdir('client_side/')
等价于os.listdir('c:/foobar/client_side')
. 如果你的 client_side 目录不在根目录下,使用os.listdir
.
对于您的 0 输出问题,让我们回想一下os.listdir(path)
返回一个列表,其中包含路径给定的目录中条目的名称。该列表是任意顺序的。它不包括特殊条目“。” 和 '..' 即使它们存在于目录中。
和os.path.isfile(path)
。
如果path是现有的常规文件,则返回 True 。这遵循符号链接,因此 islink() 和 isfile() 对于同一路径都可以为真。
listdir
既不返回绝对路径也不返回相对路径,而是返回文件名列表,同时isfile
需要路径。因此,所有这些名称都会产生False
.
要获取路径,我们可以使用os.path.join
, 直接连接两个字符串。
print ([name for name in os.listdir(path)
if os.path.isfile(os.path.join(path, name))])
或者
print ([name for name in os.listdir('client_side/')
if os.path.isfile('client_side/' + name)])