我是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='.'
)
这将产生与运行'mysql --help'相同的输出。 令我困惑的是,如果我获取由subprocess.list2cmdline输出的命令并直接运行它,则可以完美运行。 另外,如果我将''替换为'-e select * from foo',则可以运行。 因此,'<>'和文件导致了我的问题。 我知道是什么原因造成了问题,但到目前为止,我尝试过的所有方法都没有解决它。
subprocess
:https://dev59.com/AnRC5IYBdhLWcg3wOOT1 - mgilson