【问题标题】:Is there something about the os module I'm not getting?我没有得到关于 os 模块的东西吗?
【发布时间】:2011-09-08 15:13:18
【问题描述】:

在过去的半个小时里,我一直试图找出这段代码有什么问题。它应该非常简单。在这一点上,我实际上已经从文档中复制了它。但无论我尝试什么,都会收到语法错误。

代码如下:

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 循环之类的地方吗?

感谢您的帮助。在这一点上我真的很沮丧......呵呵。

【问题讨论】:

  • 你为什么还要使用“== True”?
  • 确保您的编辑器中该行没有任何隐藏的 Unicode 字符。
  • @jcomeau_jctx 这发生在我不断重写代码以找出问题所在的过程中。

标签: python syntax file operating-system


【解决方案1】:

此行缺少括号:

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

Python 抱怨 True: 位,因为它期待像这样的语句

(x if condition else y)

正如 jcomeau_ictx 所说,您还应该在检查布尔值时省略 == True

if x:
    do_something
if not y:
    do_something_else

【讨论】:

  • 谢谢...我不敢相信我已经花了这么多时间错过了。也许我需要睡一觉。
【解决方案2】:

您在上一行缺少一个右括号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2015-06-26
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    相关资源
    最近更新 更多