如何使用 Python 脚本

网友投稿 2345 2022-10-13

如何使用 Python 脚本

如何使用 Python 脚本

在学习 Python 时,很多人把模块和脚本分不清楚,所以有必要解释下这两个概念:

模块(module):是一个包含 Python 代码的纯文本文件,主要用于被其他 Python 文件导入和使用。脚本(script):也是一个包含 Python 代码的纯文本文件,但其旨在由用户直接执行,是顶级程序文件。

模块和脚本之间的主要区别在于:模块是用来导入的,而脚本是用来直接执行的。

无论哪种情况,重要的是要知道如何运行模块和脚本中的 Python 代码。

1

运行 Python 脚本

可以用任何纯文本编辑器编写 Python 代码,比如 Sublime Text,不仅功能强大,而且易于使用。当然,你也可以使用任何自己喜欢的编辑器。

使用 python 命令

假设,有一个名为 calc.py 的脚本,它里面定义了一个 add() 函数。如果要测试这个函数,可以这样编写:

def add(a, b): return a + bif __name__ == '__main__': print('test: 2 + 3 =', add(2, 3))

注意:​代码中的 if 语句很有必要,有了它,模块既可以被导入,也可以作为脚本来执行(下节会详细介绍)。

要使用 python 命令运行脚本,需要打开命令行并输入 python(如果有多个版本,则输入 python3),然后是脚本的路径:

$ python3 calc.pytest: 2 + 3 = 5

如果一切正常,在按下 Enter 键之后,将会在屏幕上看到打印的内容,是不是很简单呢!

使用脚本名

此外,也可以像 Shell 脚本一样执行 Python 脚本,只需要在第一行指定 Python 解释器的路径即可:

#!/usr/bin/env python3def add(a, b): return a + bif __name__ == '__main__': print('test: 2 + 3 =', add(2, 3))

对于 Python 来说,这是一个简单的注释,但是对于操作系统,这一行表示必须使用什么程序来运行文件。

要指定 Python 解释器的路径,有两种方式:

#!/usr/bin/python3:使用绝对路径。路径写死了,倘若解释器不在该路径下,则脚本无法执行。#!/usr/bin/env python3:使用操作系统 env 命令,该命令通过搜索 PATH 环境变量来定位和执行 python3。路径并没写死,而是动态寻找。相比之下,这种写法更灵活、更具有通用性。

要执行这样的脚本,需要为它分配可执行权限,然后在命令行中输入文件名:

$ # 赋予可执行权限$ chmod +x calc.py$$ # 使用脚本名运行脚本$ ./calc.pytest: 2 + 3 = 5

可以看到,打印结果也正常输出了。

2

命令行参数

在上面测试 add() 的时候,我们给它传递了两个固定的值 - 2 和 3,倘若参数是可变的,该怎么办?

很简单,可以使用命令行传参 - 这是对上述形式的一个扩展:

python3 my_script.py

为了解析传递的参数,我们需要用到 sys 模块:

#!/usr/bin/env python3import sysdef add(a, b): return a + bif __name__ == '__main__': args = sys.argv print(args) print(add(int(args[1]), int(args[2])))

通过使用 sys.argv,便能够获取命令行参数,它是一个列表类型。sys.argv[0] 表示代码本身文件路径,参数索引从 1 开始。

使用很简单,参数之间以空格隔开:

$ python3 calc.py 2 3['calc.py', '2', '3']5$ python3 calc.py 4 6['calc.py', '4', '6']10

这样,就可以传递任意的参数了。

3

输出重定向

在默认情况下,脚本的输出是标准系统输出(stdout)。倘若我们要分析结果,那么将其保存起来会十分有用,可以利用重定向来做到这一点。

覆盖原有内容

只需要使用一个尖括号(>),后跟一个文件名,即可将输出重定向至文件:

$ python3 calc.py 2 3 > output.txt$ python3 calc.py 4 6 > output.txt

这时,如果 output.txt 不存在,则会自动创建;但倘若文件已存在,则其内容将会被替换为新的输出(覆盖):

$ cat output.txt['calc.py', '4', '6']10

追加新内容

如果我们不想覆盖原有的内容,而是想将新的内容追加到文件的末尾,则必须使用两个尖括号(>>),而非一个:

$ # 先删除文件$ rm -rf output.txt$$ python3 calc.py 2 3 >> output.txt$ python3 calc.py 4 6 >> output.txt

再来看看 output.txt,这时所有的内容都被保留下来了:

$ cat output.txt['calc.py', '2', '3']5['calc.py', '4', '6']10

·END·

高效程序员

谈天 · 说地 · 侃代码 · 开车

长按识别二维码,解锁更多精彩内容

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:KMS:优雅的关闭过程/应用程序
下一篇:KAIST课程:并发程序设计与分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~