现在我有一个flask-script命令,它接受一个路径作为参数,然后从路径中读取:
@manager.option('-f', '--file', dest='file_path')
def my_command(file_path):
open(file_path)
...我希望它也能从标准中读取。(我经常需要将剪贴板上的文本传递给它,每次都必须创建一个文件,这很烦人。)
我如何才能做到这一点呢?
我试过通过这个https://stackoverflow.com/a/1454400/1164573使用fileinput.input(),它是用以下代码调用的:
cat << EOF | ./manage.py my_command
abc
def
ghi
EOF但是fileinput.input()是空的。这是因为flask-script包装了我的函数,而不是直接向它公开标准吗?我怎么才能避免这个问题呢?
发布于 2015-08-19 08:03:05
您可以像您的示例一样执行此操作,但使用进程替换而不是管道:
./manage.py my_command <(cat <<EOF
abc
def
ghi
jkl
EOF
)适用于我的简单测试。。。假设您的shell至少使用bash。我只使用bash,所以不知道这种语法是否适用于其他shell。
或者,您可以测试filename的值,以获得一个特殊值,通常是-,如果这是要读取的文件的名称,则使用sys.stdin。
if(sys.argv[1] == '-'):
f = sys.stdin
else:
f = file(sys.argv[1])
for line in f:
print line以此类推
https://stackoverflow.com/questions/32084321
复制相似问题