如何测试多个命令行参数(sys.argv)

4 投票
6 回答
14970 浏览
提问于 2025-04-15 15:29

我想在一个循环中测试多个命令行参数。

> python Read_xls_files.py group1 group2 group3

不,这段代码只测试第一个参数(group1)。

hlo = []
for i in range(len(sh.col_values(8))):
   if sh.cell(i, 1).value == sys.argv[1]:
      hlo.append(sh.cell(i, 8).value)

我应该怎么修改这段代码,才能测试一个、两个或者所有这些参数呢?也就是说,如果在某个 sh.cell(i, 1) 中有 group1,就把它加到列表里;如果有 group1、group2 等等,就把它们都加进去。

6 个回答

2

我建议你看看Python的optparse模块。这个模块可以帮助你处理命令行输入的参数,使用起来很方便。

3
outputList = [x for x in values if x in sys.argv[1:]]

根据你的情况(比如说是电子表格?)来替换相关的部分。这是一个列表推导式。你也可以看看optparse模块,这个模块从Python 2.3开始就已经在标准库里了。

7

你可以遍历 sys.argv[1:],比如可以用下面这样的方式:

for grp in sys.argv[1:]:
  for i in range(len(sh.col_values(8))):
   if sh.cell(i, 1).value == grp:
      hlo.append(sh.cell(i, 8).value)

撰写回答