如何在 Linux 终端上运行带有输入的 python 代码? [复制]
Posted
技术标签:
【中文标题】如何在 Linux 终端上运行带有输入的 python 代码? [复制]【英文标题】:How can I run a python code with input on Linux terminal? [duplicate] 【发布时间】:2020-01-08 14:03:51 【问题描述】:我有一个名为 myadd.py
的文件,其中只包含以下函数:
def myadd(a,b):
return a+b
如何在 Linux 终端上运行它? 我正在寻找这样简单的东西:
python myadd 2,3
我的最终目标是通过制作包含以下内容的.sh
文件将多个作业发送到服务器:
bsub -J job1 python myadd 2,3
bsub -J job1 python myadd 4,5
bsub -J job1 python myadd 6,3
.
.
.
.
让我知道是否需要进行任何更改才能执行类似上述行的操作。
【问题讨论】:
@Daniel 这不是重复的,因为这个问题也接受 Fire 模块作为答案。 【参考方案1】:您需要使用sys.argv
来接受命令行参数。我建议在两个数字之间使用空格而不是逗号。有关详细信息,请参阅 sys.argv[1] meaning in script 和 official documentation。如果您需要更复杂的命令行参数,我建议您查看 argparse
库。
【讨论】:
【参考方案2】:您需要使用命令行参数。
例如在下面的代码中:
import sys
print ('# Args:', len(sys.argv))
print ('Argument List:', str(sys.argv))
如果你从终端调用它...
python3 test_args.py ar1 ar2 ar3 ar4 ar5
结果:
# Args:: 6
Argument List: ['test_args.py', 'ar1', 'ar2', 'ar3', 'ar4', 'ar5']
【讨论】:
【参考方案3】:您可以使用argparse
代码:
import argparse
ap = argparse.ArgumentParser()
ap.add_argument("-n", "--numbers", required=True, default=None, type=str,
help="Input your numbers to add separated by comma")
args = vars(ap.parse_args())
numbers = args["numbers"].split(",") # Parse the arguments
numbers = [int(i) for i in numbers] # convert from str to int list
def addition(a: int, b: int):
"""Add function"""
return a+b
print("Result: ".format(addition(numbers[0], numbers[1])))
用法:
(pyenv) ✘ rjosyula ~ python x.py --help
usage: x.py [-h] -n NUMBERS
optional arguments:
-h, --help show this help message and exit
-n NUMBERS, --numbers NUMBERS
Input your numbers to add separated by comma
结果
python x.py --numbers 2,3
Result: 5
【讨论】:
【参考方案4】:还有fire 模块。
这只需要:
import fire
def myadd(a, b):
return a+b
if __name__ == '__main__':
fire.Fire(myadd)
导入保护已被编辑。这里不需要它,因为脚本不太可能用作模块。因此,我故意将其省略。
产生一个命令
python script.py 1 2
打印3
【讨论】:
以上是关于如何在 Linux 终端上运行带有输入的 python 代码? [复制]的主要内容,如果未能解决你的问题,请参考以下文章