现在我有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()
是空的。这是因为烧瓶脚本正在包装我的功能而不直接暴露标准吗?我怎么能绕过这个?
答案 0 :(得分:0)
你可以像你的例子那样做,但是使用进程替换而不是管道:
./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
等等