2009-09-22 78 views
0

用這個命令,我只得到該文件稱爲輸出(在現實中我有很多更--include標誌) - 所以按預期工作:蟒蛇系統調用

os.system("rsync --rsh=ssh -arvuP --include='OUTPUT' --exclude='*' [email protected]:there/ ./here") 

在這種情況下,--include和 - 排除標誌被忽略:

subprocess.call("rsync --rsh=ssh -arvuP --include='OUTPUT' --exclude='*' [email protected]:there/ ./here".split()) 

我想知道我在做什麼錯?非常感謝!

編輯:對不起,這是OS X Leopard中,我得到的所有文件...

+0

當你說「 - 包括和 - 排除標誌被忽略:」你得到的所有文件都沒有文件? – 2009-09-22 22:11:26

+1

您不指定它是在Linux,Windows還是其他操作系統上。這對調試非常重要。 – 2009-09-22 22:14:58

回答

4

嘗試使用subprocess.callshell=True,它會更接近模擬使用os.system:

subprocess.call("...", shell=True) 
+0

謝謝 - 但沒有運氣。當我使用shell = True運行時,就好像我輸入的rsync沒有任何參數... – hatmatrix 2009-09-22 23:49:24

+0

您是否刪除了.split()? – orip 2009-09-23 06:28:09

1

如果我沒有錯,Python有一個rsync模塊,爲什麼不使用它而不是一個調用。它會讓你的應用更易於管理。

+0

啊,我不知道那個模塊 - 感謝提示。我很好奇subprocess.call在這種情況下的行爲,因爲我覺得我已經遵循了關於如何使用它的說明和示例 - 沒有成功...... – hatmatrix 2009-09-23 04:00:44