我是Python的新手,而且已经好几年没有使用Linux了,所以我不确定我在哪里纠结。我正在尝试使用Popen在Ubuntu上的MySQL中运行sql文件。
以下是相关代码:
command = ['mysql', '-uUSER', '-pPWD','-h192.168.1.132', '--database=dbName', '<', './1477597236_foo.sql' ]
print("command is: "+subprocess.list2cmdline(command))
proc = subprocess.Popen(
command, stderr=subprocess.PIPE, stdout=subprocess.PIPE, cwd='.'
)
Run Code Online (Sandbox Code Playgroud)
其输出与运行'mysql --help'相同。让我感到困惑的是,如果我接受subprocess.list2cmdline的命令输出并直接运行它,它将运行得很好。另外,如果我替换'< file.sql'为'-e select * from foo',它将运行。因此,'<'和文件导致了我的问题。我知道是什么引起了这个问题,但是到目前为止我还没有尝试过解决问题的方法。
tia,克雷格