我正在使用调用方法来加载 sql 转储:
call(["psql", "-U", "user", "name", "<", "pathtofile"])
这是直接登录到 postgres 并忽略“<”和 pathtofile。
psql: warning: extra command-line argument "<" ignored
我正在使用调用方法来加载 sql 转储:
call(["psql", "-U", "user", "name", "<", "pathtofile"])
这是直接登录到 postgres 并忽略“<”和 pathtofile。
psql: warning: extra command-line argument "<" ignored
stdin
如果要重定向,请使用关键字参数:
with open("pathtofile", "rb") as f:
call(["psql", "-U", "user", "name"], stdin=f)
尝试更改为:
call(["psql", "-U", "user", "name", "<", "pathtofile"], shell=True)
^^^^^^^^^^^^
"<" 是输入重定向操作符,必须由 shell 解释。如果您不说,它会作为参数shell=True
传递给,并且不知道如何处理它。psql
psql
编辑:一般来说,@falsetru 建议的是更好的方法,因为将任意字符串传递给 shell 可能很危险。但是如果你需要使用shell操作,shell=True
就是这样做的。