Python3.5报错:获悉当前工作目录中的.py文件?


正在看《编程入门(第三版)》,参考书上想写一个程序查看当前工作目录下的.py文件,却报错,求解答,谢谢。

【代码】


 # 只获悉当前工作目录中的.py文件

def list_py(path = None):
    if path == None:
        path = os.getcwd()
        return [fname for fname in os.listdir(path) 
            if os.path.isfile(fname) 
            if fname.endswith('.py')]

【报错】


 File "8.4.1_list.py", line 16
    if os.path.isfile(fname)
    ^
IndentationError: unexpected indent

python python3.x

新藤·千寻 9 years, 3 months ago
  • 换行要加\

  • 列表解析只能有一个if

盗光者卡斯托尔 answered 9 years, 3 months ago

纯缩进错误,初学者,建议好好看看这一段

三过福利而不入 answered 9 years, 3 months ago

缩进出错, 如果没有逗号,在后面加个\

木亥弓单亻吏 answered 9 years, 3 months ago


 [fname for fname in os.listdir(path) 
            if os.path.isfile(fname) 
            if fname.endswith('.py')]

这是个python的列表解析。这是一条完整的语句,如果要换行的话,就要在行末加上"\"提示回车符并不是换行。很多语言都有这种写法。
如:


 [fname for fname in os.listdir(path) \
            if os.path.isfile(fname) \
            if fname.endswith('.py')]

但是语句不长的话,建议这样写可读性好些。


 [fname for fname in os.listdir(path) if (os.path.isfile(fname) and fname.endswith('.py'))]

万能的全控君 answered 9 years, 3 months ago

Your Answer