轻量级前端框架助力开发者提升项目效率与性能
2451
2022-10-13
如何使用 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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~