如何通过bash将参数传递给Python脚本

-3 投票
3 回答
1261 浏览
提问于 2025-04-30 11:17

我该如何在从Bash运行Python脚本时传递参数呢?

python somepythonfile.py arg1 arg2
暂无标签

3 个回答

1

使用 sys.argv,这个东西是一个列表,里面包含了传给你脚本的参数,还有文件名。

# test_prog.py
from sys import argv

print argv[0] # test_prog.py
if len(argv) > 1: # check that we have at least 1 argument
    print argv[1]
1

就像你说的那样。你可以通过 sys.argv 来访问它们。

#!/usr/bin/python

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)

输出结果:

Number of arguments: 3 arguments
Argument List: ['somepythonfile.py', 'arg1', 'arg2']
  • 参数 0 (sys.argv[0]) 是脚本的名字
  • 参数 1 到 参数 N (sys.argv[1] ... sys.argv[N]) 是传入的参数

这段内容是从 这个例子中直接拿来的。

1

正如其他人提到的,你可以通过 sys.argv 来直接获取命令行参数。

如果你想更复杂地处理这些参数,特别是当你在写一个命令行脚本时,可以看看 argparse 模块。

https://docs.python.org/2/library/argparse.html#module-argparse

(来自文档...)

比如,假设有一个名为 myprogram.py 的文件,里面有以下代码:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', help='foo help')
args = parser.parse_args()

在命令行中:

$ python myprogram.py --help
usage: myprogram.py [-h] [--foo FOO]

optional arguments:
 -h, --help  show this help message and exit
 --foo FOO   foo help

撰写回答