2014-02-26 90 views
0

我在使用subprocess.call()執行shell腳本的問題,我在Python控制檯做這個測試,試圖找出其中的問題是:使用Python子調用(叫)shell腳本將不起作用

import subprocess 
subprocess.call(["touch", "/tmp/out.txt"]) 

這可以在tmp文件夾中創建文件。然而,沒有這兩個調用的工作:

subprocess.call(["sh", "/tmp/test.sh"]) 
subprocess.call(["/tmp/test.sh"]) 

/tmp/test.sh:

#!/bin/bash 
touch out.txt 
exit 0 

基本上,執行從一個subprocess.call腳本()不產生任何輸出。我完全授權文件和文件夾以避免任何問題。看起來問題可能與用戶執行腳本有關,但與第一種情況相同,該用戶正在工作。 任何想法可能是什麼問題?

順便說一句,我使用的是Ubuntu 12.04 LTS,Python 2.7.4。

在此先感謝。

+0

這應該在你的cwd而不是你的'/ tmp'上創建'test.sh'。 – utdemir

+0

不確定你的意思。我期望在/ tmp文件夾中創建out.txt文件。我沒有任何錯誤訪問腳本文件,所以路徑是正確的,但是,該文件沒有創建。 – dmelendo

+0

「...從subprocess.call()執行腳本不產生任何輸出」 - 你的shell腳本不包含任何應該產生任何輸出的東西,所以我不知道爲什麼這是令人驚訝的... – twalberg

回答

0

您的腳本執行正確。問題出在您的bash腳本上。

你必須明白這個腳本繼承父腳本的工作目錄。因此將在運行使用subprocess.call的python腳本的目錄中創建out.txt

+0

Correct 。正如utdemir指出的,文件out.txt是在我的cwd中創建的,這是我用戶的主文件夾。 – dmelendo