【发布时间】:2011-10-31 17:58:51
【问题描述】:
这是我所拥有的:
process = subprocess.Popen(["cmd.exe",
"/c"
"appcfg.py",
"upload_data",
"--config_file=..\\bulkloader.yaml",
"--filename=" + generateXmlFilename(kind),
"--kind=" + kind,
"--url=" + getTargetGaeUrl(),
"--application=" + getTargetGaeApplication(),
"--email=example@gmail.com",
"../"])
这可以按预期工作,但是,当我引入“--passin”时,我似乎无法将其正确输入标准输入。我尝试了以下方法:
file = open("upload.pass")
process = subprocess.Popen([..., "--passin"], stdin=file)
还有
process.stdin.write("myPassword")
我什至尝试过(在黑暗中拍摄)
process = subprocess.Popen([..., "--passin", "< upload.pass"])
您可能已经注意到我正在尝试在 Windows 7 机器上执行此操作。
这可能吗?
更新:
在发布此内容并以不同的格式阅读后,我意识到我并没有等待这个过程。
解决办法是:
file = open("upload.pass")
process = subprocess.Popen([..., "--passin"], stdin=file)
process.wait()
效果很好。我假设因为我没有等待 python 没有向子进程注入任何东西,因为我已经退出了。
【问题讨论】:
-
您应该发布您的更新作为您自己问题的答案,以便其他人可以从您来之不易的智慧中受益。
标签: python google-app-engine process stdin bulkloader