48

私はPythonの初心者なので、初心者の質問で申し訳ありません

>>> import os
>>> os.listdir("/home/user/Desktop/1")
['1.txt', '2', '3.txt']
>>> os.path.isfile("/home/user/Desktop/1/1.txt")
True
>>> for i in os.listdir("/home/user/Desktop/1"):
...     print(os.path.isfile(i))
...
False
False
False
>>>

そのうちの 2 つはファイルです。出力が True であるはずなのに、なぜ False になるのでしょうか?

4

2 に答える 2

53

を印刷するとos.path.isfile(i)、「1.txt」または「2」または「3.txt」がファイルであるかどうかを確認しますos.path.isfile("/home/user/Desktop/1/1.txt")が、実行すると、ファイルへのフルパスが得られます。

その行を次のように置き換えてみてください

print(os.path.isfile("/home/user/desktop/1/" + i))

編集:

以下の icktoofay によるコメントで述べたように、より良い解決策は、行を次のように置き換えることです。

print(os.path.isfile(os.path.join("/home/user/desktop/1", i)))

または以前に「/home/user/desktop/1」を変数xに保存し、行を次のように置き換えることができます

print(os.path.isfile(os.path.join(x,i)))
于 2013-07-27T02:02:24.777 に答える