请通过以下python代码告诉我这个问题

Com*_*er7 1 python

我正在尝试编写这个代码,它只测试文件是否存在然后读取并打印.我已将此代码编写为名为readFile.py的文件,并尝试使用execfile命令通过shell运行它.我已经放了许多打印位置来检查控制器的位置.结果显示我只有前两个打印stmts和控件没有进入def readFile()..我无法找到原因,需要帮助.谢谢!!

print 'i am doing fine'
filename = "train-win.dat"
print 'i am doing fine1'
def readFile():
        print 'i am doing fine2'
        import os
        print 'i am doing fine3'

        if os.path.exists(filename):
                print 'i am doing fine4'
                f = open(filename,"r")
                print 'i am doing fine5'
                a = f.readlines()
                print 'i am doing fine6'
                print a
                print 'i am doing fine7'
        f.close()p
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 7

您定义了该函数readFile但尚未调用它,因此它永远不会执行.在文件末尾添加它(不缩进):

readFile()
Run Code Online (Sandbox Code Playgroud)

此外,您在函数的最后一行有语法错误:

 f.close()p
Run Code Online (Sandbox Code Playgroud)

那个p不应该存在.

完成这两项更改后,您的程序似乎有效.


Gre*_*ill 5

虽然您的代码将在另一个答案中显示较小的修改,但编写Python的常用方法是以稍微不同的顺序呈现代码.如果没有额外的print陈述,我可能会写:

import os

def readFile():
    if os.path.exists(filename):
        f = open(filename, "r")
        a = f.readlines()
        print a
        f.close()

filename = "train-win.dat"
readFile()
Run Code Online (Sandbox Code Playgroud)

首先是import模块.通常这是在文件的顶部完成的.

下一部分定义了一个名为的函数readFile.该def语句在执行时实际上并没有执行任何操作,但Python会记住块中的语句以便稍后执行.

最后,readFile()实际调用该readFile函数.

还要注意我f.close()if声明中移动了.f如果它从未在第一时间打开过,你就不想尝试关闭.

  • @aaronsterling:虽然你是对的,但我认为这个细节水平对那些第一次明确学习Python的人来说并不有用. (2认同)