我想实现的是启动以下shell命令:
mysql -h hostAddress -u userName -p userPassword
databaseName < fileName
在Python2.4脚本中使用类似的东西:
cmd = ["mysql", "-h", ip, "-u", mysqlUser, dbName, "<", file]
subprocess.call(cmd)
这是因为使用了重定向符号(我相信)-mysql没有接收到输入文件。
我也试过:
subprocess.call(cmd, stdin=subprocess.PIPE)
不去那里以太
有人能指定进行shell调用的语法,以便我可以输入文件重定向吗?
提前谢谢。
符号
<
仅在shell中具有此含义(即将文件读取到stdin
)。在Python中,您应该使用以下任一选项:1)读取进程中的文件内容并将其推送到子进程的
stdin
:2)通过shell读取文件内容(如您所述),但相应地重定向进程的
stdin
:安德烈正确地注意到,
<
重定向操作符由shell解释。因此,另一个可能的解决方案是:它之所以工作是因为
os.system
将其参数传递给shell。请注意,我假设所有使用的变量都来自受信任的源,否则您需要验证它们以防止任意代码执行。此外,这些变量不应包含空白(默认
IFS
值)或shell特殊字符。你必须自己将文件输入mysql stdin。这样就可以了。
相关问题 更多 >
编程相关推荐