在终端中运行Python文件

试图学习如何在Ubuntu的终端中定期运行我的脚本。话虽如此,我熟悉调用bashwgetawk,但是如何调用Python文件在终端中运行呢?我想学习这个,但不确定从哪里开始研究。我有一个引用了文件夹中多个.py文件的.pyw文件。

以下是关于在终端中运行Python脚本调用函数的问题。原标题太笼统,包含了差异案例。请参考https://stackoverflow.com/q/25837063/54964。 - Léo Léopold Hertz 준영
7个回答

选项1:打电话给翻译员

  • 对于Python 2: python <filename>.py
  • 对于Python 3: python3 <filename>.py

选项2:让脚本调用解释器

  1. 确保文件的第一行为 #!/usr/bin/env python
  2. 将其设置为可执行 - chmod +x <filename>.py
  3. 然后以 ./<filename>.py 运行它

当我想运行我的.py文件时,为什么只有使用你们的方法选项1才能正常工作,而第二个选项会出现语法错误的原因是什么? - Krsztr
如果你想要打开一个新的Python文件,该怎么办呢? - asmgx

只需在脚本文件名前加上python。例如:
python filename.py

值得一提的是,在 python 后面添加 -i 标志,可以保持会话以便进行进一步的编码。就像这样:
python -i <file_name.py>

python <filename.py>
pyw应该以相同的方式运行,我想。你也可以只用这个命令启动一个交互式控制台。
python

此外,您可以通过在脚本顶部添加shebang来避免显式调用Python:
#!/usr/bin/env python

...或者任何其他变体的数量

首先运行以下命令
chmod +x <filename>.py

然后在脚本的顶部添加 #! 和 Python 解释器的路径。
#!/usr/bin/python

如果您希望脚本与Python解释器所在的位置无关,您可以使用env程序。几乎所有的Unix变种都支持以下操作,假设Python解释器位于用户的$PATH目录中:
#! /usr/bin/env python

使用cd命令切换目录到包含.py文件的目录,然后运行以下两个命令之一:

python <filename>.py  # for Python 2.x  
python3 <filename>.py # for Python 3.x 

或者运行以下两个命令之一:

python /path/to/<filename>.py  # for Python 2.x  
python3 /path/to/<filename>.py # for Python 3.x 

尝试使用命令python3而不是python。如果脚本是用Python3编写的,而你尝试用Python2运行它,可能会出现问题。Ubuntu同时拥有这两个版本;将程序名称更改为python3(而不是替换python)使这成为可能。Ubuntu需要v2.7(截至2017年2月16日),所以请不要删除或移除Python2,而是保留两者。养成使用Python3来运行脚本的习惯,因为它可以同时运行两个版本。

2Python 3不能运行Python 2脚本(有少数例外)。 - wjandrea
对不起,你是对的。这可能就是为什么Ubuntu仍然使用Python 2的原因。抱歉,wjandrea,谢谢你纠正我。 - Tony