【问题标题】:Reading from standard input using Flask-Script / Python使用 Flask-Script / Python 从标准输入中读取
【发布时间】:2015-11-12 02:14:05
【问题描述】:

现在我有flask-script命令,它以路径为参数,然后从路径中读取:

@manager.option('-f', '--file', dest='file_path')
def my_command(file_path):
     open(file_path)
     ...

我希望它也能够从标准中读取。 (我经常需要在剪贴板上传递文本,每次都要创建一个文件很烦人。)

我怎样才能做到这一点?

我尝试过使用fileinput.input(),通过这个https://stackoverflow.com/a/1454400/1164573,调用如下:

cat << EOF | ./manage.py my_command
abc
def
ghi
EOF

但是fileinput.input() 是空的。这是因为烧瓶脚本正在包装我的函数而不是直接将标准暴露给它吗?我该如何解决这个问题?

【问题讨论】:

    标签: python flask stdin flask-script


    【解决方案1】:

    您几乎可以像您的示例一样执行此操作,但使用进程替换而不是管道:

    ./manage.py my_command <(cat <<EOF
    abc
    def
    ghi
    jkl
    EOF
    )
    

    适用于我的简单测试。 . .假设您至少在 shell 中使用 bash。我只使用bash,所以不知道这个语法是否适用于其他shell。

    或者,您可以测试文件名的值以获得特殊值,通常是-,如果这是要读取的文件名,则使用sys.stdin

    if(sys.argv[1] == '-'):
        f = sys.stdin
    else:
        f = file(sys.argv[1])
    
    for line in f:
        print line
    

    等等

    【讨论】:

      猜你喜欢
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 1970-01-01
      • 2013-03-30
      • 2012-02-17
      • 2011-10-21
      • 2015-08-14
      相关资源
      最近更新 更多