Эта ошибка возникает, когда вы используете 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')
, а os.listdir('client_side/')
эквивалентна os.listdir('c:/foobar/client_side')
.Если ваш каталог client_side не находится в корневом каталоге, такая ошибка возникает при использовании os.listdir
.
Для вашей проблемы 0 Ouput, давайте вспомним os.listdir(path)
Return a list containing the names of the entries in the directory given by path. The list is in arbitrary order. It does not include the special entries '.' and '..' even if they are present in the directory.
и os.path.isfile(path)
.
Return True if path is an existing regular file. This follows symbolic links, so both islink() and isfile() can be true for the same path.
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)])
Просто интересно, если это имеет какое-то отношение к «/» в окнах! В идеале, в окнах, вы должны иметь что-то вроде 'os.path.join ('C:', 'client_side')' – GodMan