将模块作为脚本执行
我现在正在学习Python,今天遇到了一个问题,具体内容在这个链接里:
http://docs.python.org/release/2.5.4/tut/node8.html
6.1.1 将模块作为脚本执行
当你用下面的命令运行一个Python模块时:
python fibo.py <参数>
模块里的代码会被执行,就像你导入它一样,不过这时它的
__name__
会被设置为"__main__"
。这意味着,如果你在模块的最后加上这段代码:
if __name__ == "__main__":
import sys
fib(int(sys.argv[1]))
你就可以让这个文件既可以作为脚本使用,也可以作为可导入的模块,因为只有当模块作为“主”文件执行时,解析命令行的代码才会运行:
$ python fibo.py 50 1 1 2 3 5 8 13 21
这时会输出
34
但是当我在命令行中这样做时,我得到了:
File "<input>", line 1
python fibo.py 222
SyntaxError: invalid syntax
那我该怎么正确执行这个脚本呢?
fibo.py的内容是:
def fib(n):
a,b=0,1
while b<n:
print b,
a,b = b,a+b
def fib2(n):
result=[]
a,b=0,1
while b<n:
result.append(b)
a,b=b,a+b
return result
if __name__ =="__main__":
import sys
fib(int(sys.argv[1]))
1 个回答
13
你在命令行里到底做了什么?你运行的是什么代码?
听起来你在脚本里犯了个错误——可能是漏掉了冒号,或者缩进不对。如果不看到你运行的文件,就没法说得更具体。
补充:
我已经搞清楚问题出在哪里了。你是在Python的命令行里运行python fibo.py 222
。我这样做的时候也会出现同样的错误:
[138] % python
Python 2.6.1 (r261:67515, Apr 9 2009, 17:53:24)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> python fibo.py 222
File "<stdin>", line 1
python fibo.py 222
^
SyntaxError: invalid syntax
>>>
你需要从操作系统的命令行提示符运行它,而不是在Python的交互式命令行里。
首先确保你切换到Python的安装目录。例如,在操作系统的命令行里输入:cd C:\Python33\ ——这要根据你的Python版本来定。我的是3.3。然后输入:python fibo.py 200 (比如说)