现在我有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 https://stackoverflow.com/a/1454400/1164573,通过以下方式调用:
cat << EOF | ./manage.py my_command
abc
def
ghi
EOF
But fileinput.input()
是空的。这是因为 Flask-script 正在包装我的函数而不是直接向其公开标准吗?我该如何解决这个问题?
您可以像您的示例一样执行此操作,但使用进程替换而不是管道:
./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
等等
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)