Я пытаюсь использовать for
и модуль os
для просмотра списка имен файлов, измените переменную itemtype
на "FILE" или "DIRECTORY" соответственно и распечатайте ее. Когда я пытаюсь сделать это в консоли Python, это работает нормально. Однако когда в моем скрипте запускается практически идентичный фрагмент кода, функции isdir()
и isfile()
возвращают значение false.
Я пытаюсь это в консоли:
>>> import os
>>> files = os.listdir()
>>> print(files)
['namebydate.py', 'order.bat', 'storebydate.py', 'test', '__pycache__']
>>> for i in files:
... itemtype=''
... if os.path.isdir(i):
... itemtype='DIRECTORY'
... elif os.path.isfile(i):
... itemtype='FILE'
...
... print('{itemtype}'.format(itemtype=itemtype))
...
FILE
FILE
FILE
DIRECTORY
DIRECTORY
>>>
И это прекрасно работает.
Но когда мой скрипт запускается и переходит к его эквиваленту:
for i in files:
itemtype = ''
if os.path.isdir(i):
itemtype = 'DIRECTORY'
elif os.path.isfile(i):
itemtype = 'FILE'
print('({current}/{total}) [{itemtype}] {name}'.format(
current=str(files.index(i)+1),
total=len(files),
itemtype=itemtype,
name=i))
Функции возвращают false, оставляя значение itemtype
в виде пустой строки, и вывод становится:
Listing...
(1/4) [] testdir
(2/4) [] testdoc1.txt
(3/4) [] testdoc2.txt
(4/4) [] testdoc3.txt
В этом случае ожидаемый результат должен быть:
Listing...
(1/4) [DIRECTORY] testdir
(2/4) [FILE] testdoc1.txt
(3/4) [FILE] testdoc2.txt
(4/4) [FILE] testdoc3.txt