使用命令行参数来操作csv文件中的值

时间:2017-12-09 19:41:59

标签: python python-3.x

我收到了各种.csv文件,每个文件我需要识别与最长列表关联的密钥;并打印该密钥。以及仅出现在csv文件的最后一列中的值,并打印该值。我被鼓励使用命令行参数,我是新手,所以我很难用这个。以下是给出的csv文件的示例:
草蜢,草
蜥蜴,草蜢
鹰,蚱蜢,蜥蜴,兔子,老鼠,蛇
兔,草
蛇,鼠
老鼠,草

所以我试图打印的列表最长的键是Hawk。 这是我到目前为止的代码:

    import sys
    import csv
    if len(sys.argv) != "":
        inf = open(sys.argv[0], "r")
        outf = open(sys.argv[1], "w")

        words = 0
        maxvalue = 0

        line = inf.readline()
        for line in data:
            while line != "":
               words = words + len(line.split())

               maxvalue = maxvalue + words
               if words > value:
                   maxline = words

              # Read the next line from the file.
              line = inf.readline()

       outf.write(str(maxvalue))

但由于我对命令行参数知之甚少,因此我无法使用索引错误,而且我不确定如何解决它。 在此代码之前,我已打开/读取文件。我正在使用 python3 ,任何帮助都将不胜感激! 谢谢!

2 个答案:

答案 0 :(得分:0)

您需要将if条件更改为:

if sys.argv:

答案 1 :(得分:0)

您需要将if条件更改为:

if sys.argv[1:]:

[1:]表示sys.argv中除第一个'之外的所有元素。如果没有命令行参数,sys.argv[1:]将是一个空列表,其值为False。非空列表的评估结果为True

sys.argv的第一个元素是文件名(如果您在REPL中,则为''),所以

if sys.argv:

始终评估为True

在REPL

中尝试此操作
>>> import sys
>>> sys.argv
['']
>>> bool(sys.argv)
True
>>> sys.argv[1:]
[]
>>> bool(sys.argv[1:])
False
>>> if sys.argv:
...     print('aaa')
...
aaa
>>> if sys.argv[1:]:
...     print('aaa')
...
>>>