7C00.ME/houmu 2013-05-15

Python脚本的几种启动方式

假设这里有个Python脚本文件python.py,代码很简单,就是打印一行“hello world”。

print "hello world"

要打印一行“hello world”,不用写成脚本文件,直接在终端或命令行输入python -c "print \"hello world\""即可。这里要介绍几种“好玩”的启动Python脚本的方式。

1 python [ -c cmd | -m mod | script | - ]

python hello.py
python -m hello.py
cat hello.py | python 

这三种方法和前面提到的一种方法可归纳为python [ -c cmd | -m mod | script | - ]。这条规则可以由python -h获知。需要说明的是:

2 as shell/command script

在Linux系统中,在hello.py开头加一行代码,变成

#!/usr/bin/python
print "hello world"

并且在赋予执行权限chmod u+x hello.py,就可以这么用了

./hello.py

在Windows中也有类似的用法,在开头也加一行代码,变成

@python -B -x "%~dpnx0"
print "hello world"

再把文件名改为hello.bat,可以在命令行中这么用

hello.cmd

这里需要说明的是:

3 python dir/

在Linux中执行下面的操作

mkdir hello
cp hello.py hello/__main__.py
python hello/

可以看到也能输出“hello world”,这是另一种用法python dir/。但是必须注意的是dir/的根目录下必须有__main__.py文件,该文件也是python首先解释的文件。这种启动方式不适用于Windows。

4 python zipfile

在Linux中接着上面的操作

cd hello
zip hello.zip *
python hello.zip

可以看到也能输出“hello world”,这种方法可记为python zipfile。需要注意的是__main__.py文件必须在zip文件的更目录下,可以通过unzip -l hello.zip查看zip文件包含的文件和文件路径。这种启动方式也可以在Windows下使用。

5 python compiledfile

先回到hello.py所在目录,然后

python -c "import hello"
python hello.pyc

上面第一行其实是为了把hello.py编译成hello.pyc。可以看到上面的操作也能输出“hello world”。这种操作可以在Linux和Windows上使用,但存在的问题是不同版本的python编译之后的pyc文件格式不同,且前后不兼容。这个的使用场合十分有限,一般情况下不应该这么做。

6 in python shell

在hello.py所在目录进行操作

python 
>> import hello

就是先进入python shell,然后导入脚本。这种做法有点猥琐。