0

我想轻松测试我的 python 程序,而无需经常使用 python shell,因为每次修改程序时,您都必须退出,重新进入 python shell 并再次导入程序。我正在使用带有 OSX 的 2012 Macbook pro。我有以下代码:

import sys

def read_strings(filename):
    with open(filename) as file:
        return file.read().split('>')[1:0]

file1 = sys.argv[1]
filename = read_strings(file1)

本质上,我想读入并拆分一个包含以下内容的 txt 文件:

id1>id2>id3>id4

我将其输入到我的命令行中:

pal-nat184-102-127:python_stuff ceb$ python3 program.py string.txt

但是,当我在命令行上尝试 sys.argv 方法时,我的程序什么也没有返回。这是测试代码的好方法,有人能指出我正确的方向吗?

这就是我想要发生的事情:

pal-nat184-102-127:python_stuff ceb$ python3 program.py string.txt

['id1','id2','id3','id4']

4

2 回答 2

2

让我们一次看一遍:

但是,当我在命令行上尝试 sys.argv 方法时,我的程序什么也不返回

您的程序的最终结果是将字符串写入变量文件名。让程序“返回”一个值有点奇怪。通常,您希望程序将其打印出来或将某些内容保存到文件中。我猜如果你通过添加修改你的程序,它会简化你的调试,

print (filename)

最后:您将能够看到程序的结果。

谁能指出我正确的方向?

另一个调试说明:编写 .py 文件可能很有用,这样它们就可以在命令行或 python shell 中独立运行。您当前如何构建代码,这将工作得不太好。(启动 shell 然后导入文件会导致错误,因为 sys.argv[1] 未定义。)

对此的解决方案是更改代码的底部,如下所示:

if __name__ == '__main__':
    file1 = sys.argv[1]
    filename = read_strings(file1)

顶部的 if 守卫说:“如果作为独立脚本运行,则运行我下方的内容。如果您从其他地方导入我,则不要执行我下方的内容。”

如果我误解了您的问题,请随时在下面跟进。

于 2013-10-10T00:40:22.750 回答
1

你永远不会对read_strings. 尝试:

print(read_strings(file1))
于 2013-10-10T00:30:51.483 回答