我现在正在学习python,而今天,我在http://docs.python.org/release/2.5.4/tut/node8.html遇到了一个问题
6.1.1作为脚本执行模块
当你运行一个Python模块
python fibo.py <arguments>
- 如何将本地(NT)path名转换为Win32path名?
- 我怎样才能在Windows上primefaces交换两个指针?
- 我怎样才能使一个程序,只有当我插入USB驱动器运行?
- 在Windows上SWT:在光标滚动控制(不集中)
- 已检测到CallbackOnCollectedDelegate
模块中的代码将被执行,就像导入它一样,但将__name__设置为“__main__”。 这意味着通过在你的模块的最后添加这个代码:
if __name__ == "__main__": import sys` fib(int(sys.argv[1]))
您可以将该文件作为脚本以及可导入的模块使用,因为parsing命令行的代码仅在模块作为“主”文件执行时才会运行:
$ python fibo.py 50 1 1 2 3 5 8 13 2134
但是当我在shell中这样做的时候,我得到了
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]))
你到底在做什么? 你正在运行的代码是什么?
这听起来像你在脚本中犯了一个错误 – 可能是错过了冒号或缩进了错误。 没有看到你正在运行的文件是不可能说更多。
编辑:
我已经知道发生了什么问题。 你正试图在python shell中运行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的交互式shell中运行它。
确保首先转到Python主目录。 例如,从操作系统的命令行输入:cd C:\ Python33 \ – 取决于您的python版本。 矿是3.3。 然后键入:python fibo.py 200(例如)