通过cat PYTHON从文件中读取内容时出现“索引超出范围”

时间:2019-01-28 16:00:00

标签: python shell input cat

我正在尝试通过cat命令从文件获取输入到python文件。我的python版本是3.5。代码看起来像这样。

with open(sys.argv[1]) as f:
    while True:
        if f.readline()== '':
            break
        line = f.readline().strip()

我正在通过以下命令获取输入。

python cptest.py | cat ts.csv

但是我一直遇到以下错误。

  

文件“ cptest.py”,第9行,在       使用open(sys.argv [1])为f:   IndexError:列表索引超出范围

如何使用cat命令将输入​​从文件发送到python脚本?我必须使用cat命令或任何其他将输入管道传输到文件的方式。

1 个答案:

答案 0 :(得分:1)

似乎是您的命令在这里出现的问题。您正在将python脚本的输出传递给cat,还使用cat打开文件,这意味着cat将忽略您传递给它的任何内容。您应该将cat的输出通过管道传递到脚本中: { "_index": "2019.01.28-container.api", "_type": "doc", "_id": "pZctlWgBojxJzDZGWqZz", "_score": 1, "_source": { "type": "beats", "level": "Debug", "@timestamp": "2019-01-28T15:56:41.295Z", "msg": "Hosting starting", "logtime": "2019-01-28 15:23:12.911 +03:00", "message": "2019-01-28 15:23:12.911 +03:00 Debug Hosting starting [exception 2]", "exception": "exception 2" } } 然后,为了从python中的标准输入(从管道)读取输入,您应该这样做:cat ts.csv | python cptest.py。 我很乐意建议您选择将文件名作为参数提供给python脚本的替代方法,例如:for line in sys.stdin,然后打开此文件(您可以在python的sys.argv [1]中找到此名称(而不是cat )并逐行循环浏览。

祝你好运, Teo