跳至主要内容

如何运行 Python 脚本教程

了解如何从命令行执行 Python 脚本,以及如何向脚本提供命令行参数。
· 10分钟 阅读

使用 AI 探索

在线运行和编辑此教程中的代码

运行代码

通常,初学者会先在命令行中学习编写 Python 脚本,然后再从命令行执行脚本。脚本一般在文本编辑器中编写,并从命令行运行。本文将更详细地介绍如何运行 Python 脚本。

Python 脚本与解释器

计算机无法按人类书写的方式理解代码,因此您需要一个解释器来连接计算机与人类编写的代码。解释器的工作是将代码转换为计算机能够理解和处理的格式。

解释器按以下方式处理代码:

  • 按顺序处理 Python 脚本

  • 将代码编译为字节码,这是一种计算机能够理解的较低级语言。

  • 最后,由 Python 虚拟机(PVM)登场。PVM 是 Python 的运行时引擎。它通过遍历低级字节码指令,将其逐条执行。

与脚本类似,还有一种称为模块(Module)的形式,即在一个 Python 脚本中导入并使用另一个 Python 脚本。

Python 脚本以 .py 扩展名保存,用于告知计算机这是一个 Python 程序脚本。与 Windows 不同,基于 Unix 的操作系统(如 Linux 和 Mac)通常预装了 Python。此外,在 Windows 与 Unix 系统上运行 Python 脚本的方式也有所不同。

运行 Python 脚本:环境准备

对于所有用户,尤其是 Windows 用户,强烈建议您安装 Anaconda,可从 Anaconda 官网下载。您可以参考这篇Windows 安装 Anaconda 教程。

要在 Windows 操作系统上安装 Python3,欢迎查看这篇Python 环境设置教程。

在不同的操作系统上,可通过以下方式访问 Python 的命令行解释器:

  • 在 Windows 上,命令行称为命令提示符,可通过点击 开始 菜单并搜索 command prompt 进入。另一种方式是在 运行 对话框中输入 cmd 并回车(开始菜单 $->$ 运行,输入 cmd)。之后,如果 Python 安装在您的 C 盘,只需输入 C:\python36\python.exe,其中 python36 为 Python 版本(注意:该路径可能因 Python 配置的目录而异)。
command prompt
(来源)
  • 在 Mac 系统上非常简单。打开 Launchpad 并搜索 Terminal,在终端中输入 Python,即可看到包含 Python 版本的信息。
mac system
  • 与 Mac 类似,在 Linux 系统上访问终端也很容易。右键点击桌面并选择 Terminal,在终端中输入 Python。
linux system
(来源)

注意:本教程将以 Mac OS 终端为例进行讲解。

事不宜迟,我们开始吧!

在终端中编写 Python 脚本

我们来看如何直接在终端中编写代码并生成输出。首先,输入 python3,表示您将使用 Python3 版本。

之后,您就可以像在文本编辑器或 IDE(集成开发环境)中一样编写代码,尽管终端无法提供 IDE 那样的完整功能。

让我们从经久不衰的 Hello, World! 示例开始,看看在终端中的输出是什么样子。

Writing the Python Script in Terminal

只需打开终端并输入 Python3 就能编写 Python 代码,是不是很方便?我们再试几个示例。

Writing the Python Script in Terminal

上面的示例有一点需要注意,即使没有输入 print 语句,您也能得到输出。

我们稍微复杂一点:使用 NumPy(Numerical Python)库创建两个数组,并对其进行一些数学运算。简单介绍一下 numpy:它是一个 Python 编程库,能够处理大型的多维数组和矩阵,并提供丰富的高阶数学函数来操作这些数组。

Writing the Python Script in Terminal

从上图可以看到,通过 numpy,您可以在终端中创建、相加并相乘两个 numpy 数组。需要注意的是,numpy 的 multiply 函数是逐元素相乘,而 dot 函数则计算两个矩阵的点积。要执行 np.dot 操作,必须确保第一个矩阵的列数等于第二个矩阵的行数,否则会出现value error。

如何从终端运行 Python 脚本

从终端运行 Python 脚本非常简单。与其在终端中编写脚本,不如使用 vim、emacs 或 notepad++ 等文本编辑器,将文件保存为 .py 扩展名。然后,打开终端,进入代码所在目录,使用关键字 python 加上脚本名运行即可。

Running the .py script from the Terminal

要创建 terminal.py 文件,可在终端中使用 vim,输入程序名 vim terminal.py 并粘贴下面的代码。保存时按 esc 键后输入 wq!。最后,运行脚本只需输入 python3 terminal.py,不到一秒即可看到上图所示输出。

以下是上述示例中使用的代码。

import numpy as np

x = np.array([[1,2],[3,4]], dtype=np.float64)
y = np.array([[5,6],[7,8]], dtype=np.float64)

# Elementwise sum; both produce the array
# [[ 6.0  8.0]
#  [10.0 12.0]]
print("Output of adding x and y with a '+' operator:",x + y)
print("Output of adding x and y using 'numpy.add':",np.add(x, y))

# Elementwise difference; both produce the array
# [[-4.0 -4.0]
#  [-4.0 -4.0]]
print("Output of subtracting x and y with a '-' operator:",x - y)
print("Output of subtracting x and y using 'numpy.subtract':",np.subtract(x, y))

# Elementwise product; both produce the array
# [[ 5.0 12.0]
#  [21.0 32.0]]
print("Output of elementwise product of x and y with a '*' operator:",x * y)
print("Output of element wise product of x and y using 'numpy.multiply':",np.multiply(x, y))

# Elementwise division; both produce the array
# [[ 0.2         0.33333333]
#  [ 0.42857143  0.5       ]]
print("Output of elementwise division x and y with a '/' operator:",x / y)
print("Output of elementwise division x and y using 'numpy.divide':",np.divide(x, y))

# Elementwise square root; produces the array
# [[ 1.          1.41421356]
#  [ 1.73205081  2.        ]]
print("Output of elementwise square root x using 'numpy.sqrt':",np.sqrt(x))
Output of adding x and y with a '+' operator: [[ 6.  8.]
 [10. 12.]]
Output of adding x and y using 'numpy.add': [[ 6.  8.]
 [10. 12.]]
Output of subtracting x and y with a '-' operator: [[-4. -4.]
 [-4. -4.]]
Output of subtracting x and y using 'numpy.subtract': [[-4. -4.]
 [-4. -4.]]
Output of elementwise product of x and y with a '*' operator: [[ 5. 12.]
 [21. 32.]]
Output of element wise product of x and y using 'numpy.multiply': [[ 5. 12.]
 [21. 32.]]
Output of elementwise division x and y with a '/' operator: [[0.2        0.33333333]
 [0.42857143 0.5       ]]
Output of elementwise division x and y using 'numpy.divide': [[0.2        0.33333333]
 [0.42857143 0.5       ]]
Output of elementwise square root x using 'numpy.sqrt': [[1.         1.41421356]
 [1.73205081 2.        ]]

向 Python 脚本传递命令行参数

命令行参数能大大简化工作。在生产级代码中,经常会使用命令行参数,这也有助于高效复现实验结果。比如,若代码包含大量用户输入或需要读取的文件,那么使用命令行参数后,您无需每次修改文件名或变量输入时都深入代码进行更改。

为此,您将使用 sys 模块,它是 Python 的内置模块。在 sys 中,有一个 argv,它会给出传递给 Python 程序的命令行参数列表。sys.argv 将命令行参数读取为一个列表,其中第一个项目/元素可通过 sys.argv[1] 访问,而第一个参数即 sys.argv[0] 始终是程序被调用时的名称。

我们来看一个简单的示例,了解其工作方式。

注意:Python 会将命令行参数读取为 字符串,如果您处理的是数字,请确保将其转换为 整数。

与前一个示例类似,将下面的代码保存为 command_line.py,然后通过输入 python3 command_line.py 10 运行,其中 10 为命令行参数。

import sys
num = sys.argv[1]
for i in range(int(num)):
    print (i)
Passing Command Line Arguments to Python Script

如果不提供任何命令行参数会怎样?

您会得到一个 list index out of range 错误,这也再次说明 sys.argv 按列表来读取。为避免此类错误,您需要进行异常处理,这超出了本教程的范围。

Passing Command Line Arguments to Python Script

将 Python 脚本的输出写入文件

最后,作为补充,我们来看如何使用 > 将 Python 脚本的输出保存到 txt 文件中。

首先创建一个名为 cli 的文件夹,并将 command_line.py 移动到该文件夹中。然后检查该文件夹中是否已有 txt 文件。

接着输入 python3 command_line.py 10 > output.txt,最后再查看 cli 文件夹的内容。现在,您应该能看到 output.txt 文件。

Writing the Output of Python Script to a File

我们打开看看 output.txt 文件的内容。

Writing the Output of Python Script to a File

从上述输出可以看到,0-9 这几个数字已经通过一个 > 符号被写入了文本文件。

结语

恭喜您完成本教程。

还有许多内容值得探索,例如在 Python 中进行基于 GUI 的执行、交互式运行 Python 脚本、以及从文件管理器或 IDE 运行脚本。关于命令行执行,您也可以在 Windows 的 command prompt 上做实验,看看与基于 Unix 的系统有何不同。

如果您刚开始学习 Python 并希望了解更多,欢迎参加 DataCamp 的Python 数据科学入门课程。

Python 脚本常见问答

什么是 Python 脚本?

Python 脚本是包含 Python 代码的文件。通过运行该脚本(可在命令行运行,或由其他脚本调用)即可执行其中的代码。

如何创建一个 Python 脚本?

要创建 Python 脚本,您需要一个文本编辑器或能够编写并保存 Python 代码的集成开发环境(IDE)。常见的 Python IDE 包括 PyCharm、IDLE 和 Visual Studio Code。

创建新的 Python 脚本时,只需新建一个文件并以 .py 为扩展名保存。然后在文件中编写 Python 代码并保存,即可运行该脚本。

我可以在后台运行 Python 脚本吗?

可以。您可以使用 nohup 命令在后台运行 Python 脚本。例如:

nohup python script.py &

这会在后台运行脚本,同时允许您在脚本运行期间继续使用终端。

如何从命令行运行 Python 脚本?

要在命令行运行 Python 脚本,需先在系统中安装 Python。然后可使用以下命令执行脚本:

python script.py

主题