このエラーは、既存のパスを参照していないパス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 出力の問題については、思い出してみましょうos.listdir(path)
パスで指定されたディレクトリ内のエントリの名前を含むリストを返します。リストは任意の順序です。特別なエントリ「.」は含まれません。および「..」は、ディレクトリに存在する場合でも。
とos.path.isfile(path)
。
pathが既存の通常ファイルの場合は True を返します。これはシンボリック リンクをたどるので、同じパスに対して islink() と isfile() の両方が true になる可能性があります。
listdir
絶対パスも相対パスも返しませんが、ファイルの名前のリストを返しますが、パスがisfile
必要です。したがって、これらの名前はすべてFalse
.
パスを取得するには、 を使用するかos.path.join
、2 つの文字列を直接連結します。
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)])