1

这是我所拥有的:

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 没有向子进程注入任何东西,因为我已经退出了。

4

2 回答 2

1

在发布这个并以不同的格式阅读它之后,我意识到我并没有等待这个过程。

解决方案是:

file = open("upload.pass")
process = subprocess.Popen([..., "--passin"], stdin=file)
process.wait()

这完美无缺。我假设因为我没有等待 python 没有向子进程注入任何东西,因为我已经退出了。

于 2012-03-28T19:47:32.490 回答
0

如果您发现自己添加了处理身份验证、错误等的代码,您可能还希望将 gaedriver 作为一个库来使用 appcfg: http ://code.google.com/p/gaedriver/

于 2012-03-28T21:42:02.533 回答