2011-08-21 35 views
1

以下是我有:如何使用--passin和subprocess.Popen自動化Google App Engine upload_data?

process = subprocess.Popen(["cmd.exe", 
          "/c" 
          "appcfg.py", 
          "upload_data", 
          "--config_file=..\\bulkloader.yaml", 
          "--filename=" + generateXmlFilename(kind), 
          "--kind=" + kind, 
          "--url=" + getTargetGaeUrl(), 
          "--application=" + getTargetGaeApplication(), 
          "[email protected]", 
          "../"]) 

可正常工作,但是,當我介紹「--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沒有注入任何東西到子進程中,因爲我已經退出了。

+2

你應該張貼您的更新作爲一個答案,你自己問題,所以其他人可以從你的來之不易的智慧中受益。 –

回答

1

在發佈此文件並以不同格式閱讀之後,我意識到我並未等待該過程。

解決的辦法是:

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

完美的作品。我假設,因爲我沒有等待python沒有注入任何東西到子進程中,因爲我已經退出了。