循环 sys.args

Jim*_*Jim 2 python linux for-loop command-line-arguments

尝试循环时,sys.args出现以下错误:

Traceback (most recent call last):
  File "./autoCrosRef.py", line 59, in <module>
    cleanFile(inputArgs[i])
TypeError: list indices must be integers, not str
Run Code Online (Sandbox Code Playgroud)

这是我如何调用我的程序:

./autoCrosRef.py file.txt

这是我用来尝试循环的代码:

import sys
# ------
#  MAIN
# ------
inputArgs = sys.argv

print len(inputArgs)

for i in inputArgs[1:]:

    cleanFile(inputArgs[i])
Run Code Online (Sandbox Code Playgroud)

我的打印命令显示我在 cmd 中传递了 2 个参数,但它一直出错,是我调用它错误还是我的循环错误?

Sin*_*son 9

i您的 inputArgs 数组中有一个项目 - 不是索引。你可以这样做

for i in range(1, len(inputArgs)):
    # i is a number, from 1 to len(inputArgs)-1
    cleanFile(inputArgs[i])
Run Code Online (Sandbox Code Playgroud)

或者(这个是首选)

for i in inputArgs[1:]:
    # i is an item from inputArgs. If inputArgs=['foo', 'bar', 'baz']
    # then i is first 'bar' then 'baz'.
    cleanFile(i)
Run Code Online (Sandbox Code Playgroud)