unix风格的可执行脚本:#! —— unix 脚本基础 | 第一部分 开始 —— 第 3 章: 你是如何运行程序的 |《学习 python:强大的面向对象编程(第 5 版)》| python 技术论坛-江南app体育官方入口
如果将在unix,linux或类unix系统上使用python,还可以将python代码文件转换为可执行程序,就如同使用shell语言(如csh或ksh)编写程序一样。这些文件通常被称作可执行脚本。简言之,unix风格的可执行脚本只是包含python语句的普通文本文件,但有两个特殊属性:
- 它们的首行特殊。脚本通常以开头为 #! 字符的一行开始(通常叫作“hash bang”或者“shebang”),后面跟着机器上python解释器的路径。
- 它们通常有可执行权限。脚本文件通常被标记为可执行来告诉操作系统它们可以被作为顶层程序运行。在unix 系统上,如
chmod x file.py
通常可以达到此目的。
来看一个类unix系统的例子。再次使用文本编辑器来创建一个名为 brain的python代码文件:
print('the bright side ' 'of life...') # means concatenate for strings
文件顶部的特殊行告诉系统python解释器在哪里。技术上讲,首行是一个python注释。如前面提到的,在python程序中所有注释都开始于一个 # 且扩展到行尾;它们是在代码中为人类读者插入额外信息的地方。但当像本文件中的首行那样的注释出现时,在unix上它是特殊的,因为操作系统shell使用它来找到一个解释器,运行文件中其余部分的程序代码。
而且,注意本文件简单地被称作 brain, 没有之前用于模块文件的 .py 后缀。给名字添加 .py 不会有问题(且可以帮助你记住这是一个python程序文件),但因为你没有计划让其他模块导入此文件中的代码,文件的名称是无关紧要的。如果使用 chmod x brain
shell 命令给了文件可执行权限,可以从操作系统shell运行它就好像它是一个二进制程序(对下面例子,要么确保 .
(当前目录)在你系统的 path 设置中,或者使用 ./brain
运行):
% brian
the bright side of life...