如何从 shell 运行.py 文件内的 python 定义?

如何从 shell 运行.py 文件内的 python 定义?

我的函数位于与该函数同名的 .py 文件中:

emp@emp:~$ python ~/Dropbox/emp/Python/stromkosten_pro_jahr.pyempedokles@empedokles:~$ stromkosten_pro_jahr(20,3)
bash: Syntaxfehler beim unerwarteten Wort »20,3«
emp@emp:~$ 

错误在哪里?

答案1

您需要cd进入您的 python 文件所在的目录,然后调用 python 交互式 shell 才能以交互方式调用和运行函数。

# cd to the directory
$ cd ~/Dropbox/emp/Python/

# invoke the python interactive shell
$ python     # use `python3` to invoke the Python3 shell

Python 交互式 shell 看起来是这样的:

Python 2.7.6 (default, Mar 22 2014, 22:59:38) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

在这里您可以导入模块(您的 *.py 文件)并运行其中写的函数:

>>> from stromkosten_pro_jahr import stromkosten_pro_jahr
>>> stromkosten_pro_jahr(20,3)
[The output of function would be shown right here]

如需更多信息,我建议您访问Python 教程

答案2

正如我发现的那样回答,您可以python直接从以下方式运行 的功能bash

$ python -c 'from a import stromkosten_pro_jahr; stromkosten_pro_jahr(20,3)'

a您的文件/模块的名称在哪里( a.py)。

但重要的是要与您的文件位于同一目录中。

答案3

您无法直接从 Bash shell 调用 Python 函数。您收到此特定错误是因为 bash 正在解析您的参数(20,3)像这样:

$ echo (20,3)
bash: syntax error near unexpected token `20,3'

要将括号作为字符串传递,您需要对其进行转义:

$ echo \(20,3\) '(1,2)'
(20,3) (1,2)

但这仍然不会神奇地作为 Python 代码运行 - 您需要解析 Python 程序中的命令行参数(保存为 x.py):

import sys

def fn(a,b):
  print a+b

eval(sys.argv[1])

然后:

$ python x.py 'fn(0,13)'
13

相关内容