0

我正在使用调用方法来加载 sql 转储:

 call(["psql", "-U", "user", "name", "<", "pathtofile"])

这是直接登录到 postgres 并忽略“<”和 pathtofile。

 psql: warning: extra command-line argument "<" ignored
4

2 回答 2

2

stdin如果要重定向,请使用关键字参数:

with open("pathtofile", "rb") as f:
    call(["psql", "-U", "user", "name"], stdin=f)
于 2013-11-03T04:48:32.003 回答
1

尝试更改为:

 call(["psql", "-U", "user", "name", "<", "pathtofile"], shell=True)
                                                       ^^^^^^^^^^^^

"<" 是输入重定向操作符,必须由 shell 解释。如果您不说,它会作为参数shell=True传递给,并且不知道如何处理它。psqlpsql

编辑:一般来说,@falsetru 建议的是更好的方法,因为将任意字符串传递给 shell 可能很危险。但是如果你需要使用shell操作,shell=True就是这样做的。

于 2013-11-03T04:48:53.423 回答