使用命令行参数操作csv fi中的值

2024-04-29 23:02:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了各种各样的.csv文件,每一个我都需要确定与最长列表相关联的密钥;把钥匙印出来。以及仅出现在csv文件最后一列中的值,并打印该值。我被鼓励使用命令行参数,我是新来的,所以我有一个艰难的时间与这个。下面是一个csv文件示例:
蚱蜢,草
蜥蜴、蚱蜢
鹰、蚱蜢、蜥蜴、兔子、老鼠、蛇
兔子,草
蛇,老鼠
老鼠,草

所以我要打印的最长列表的关键是鹰。 这是我目前掌握的代码:

    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,任何帮助都将不胜感激!! 谢谢你


Tags: 文件csv命令行列表参数syslineinf
2条回答

您需要将if条件更改为:

if sys.argv[1:]:

[1:]是指sys.argv中除第一个以外的所有元素^{<如果没有命令行参数,cd4>}将是一个空列表,其计算结果为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')
...
>>>

您需要将if条件更改为:

if sys.argv:

相关问题 更多 >