Что-то в модуле os я не получаю?

1

За последние полчаса я пытался выяснить, что не так с этим кодом. Это должно быть очень прямолинейно. На данный момент я практически скопировал это из документации. Но независимо от того, что я пытаюсь, я получаю синтаксическую ошибку.

Здесь код:

def addfiles(folder):
    foldercont = [os.path.normcase(f) for f in os.listdir(folder)]
    for x in foldercont:
        if os.path.isfile(x) == True:
            files.append(os.path.realpath(x)
        if os.path.isdir(x) == True:
            addfiles(os.path.realpath(x))

Всякий раз, когда я запускаю это, я получаю сообщение об ошибке

 if os.path.isdir(x) == True:
                           ^
 SyntaxError: invalid syntax

Однако, если я пишу эквивалентный код в интерактивном интерпретаторе, он работает нормально.

Может ли этот метод просто не использоваться в цикле if или что-то еще?

Спасибо за помощь. На данный момент я очень расстроен... хе-хе.

  • 4
    почему вы используете "== True" в любом случае?
  • 0
    Убедитесь, что в вашем редакторе нет скрытых символов Юникода в этой строке.
Показать ещё 1 комментарий
Теги:
file
syntax
operating-system

2 ответа

11
Лучший ответ

В этой строке отсутствует скобка:

files.append(os.path.realpath(x)
                                ^

Python жалуется на бит True:, потому что ожидает выражения типа

(x if condition else y)

Как говорит jcomeau_ictx, вы должны также оставить == True при проверке для booleans:

if x:
    do_something
if not y:
    do_something_else
  • 1
    спасибо ... я не могу поверить, что я потратил все это время на это. Может быть, мне нужно немного поспать.
  • 0
    +1 ты получил это первым
1

вам не хватает скобок в предыдущей строке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню