2016-04-10 138 views
0

我有一個在Raspberry Pi上生成圖片的.sh文件。而這個文件中,我有以下:從.sh到Python獲取變量值

Config.sh:

#!/bin/bash 
suffix=$(date +%H%M%S) 
cd /home/pi/photobooth_images/ 
sudo cp image1.jpg /usb/photobooth_images/image-${suffix}-1.jpg 
sudo convert -size 1800x1200 xc:white \ 
     image1.jpg -geometry 1536x1152+240+24 -composite \ 
    /home/pi/template/logo.png -geometry 192x1152+24+24 -composite \ 
     PB_${suffix}.jpg 
sudo cp PB_${suffix}.jpg /usb/photobooth_montage/PB_${suffix}.jpg 
sudo rm /home/pi/photobooth_images/* 
returnvalue=PB_${suffix}.jpg 
echo "$returnvalue" 

我想在這裏做的就是在PB_${suffix}.jpg「返回值」值(文件名),它產生的成Python。現在我的Python程序有這一行,它運行上面的.sh文件。

Main.py:

return_value = subprocess.call("sudo ./" + config.sh, shell=True) 
print "The Value is: " + str(return_value) + " This value from Python" 

The output I get is this 
[08:33:02 04-10-2016] [PHOTO] Assembling pictures according to 1a template. 
PB_083302.jpg 
The Value is: 0 This value from Python 
The output I am expected should be something like "PB_070638.jpg" 

任何幫助是極大的讚賞。

+0

你不應該使用'sudo'來進行這樣的簡單操作。 sudo保留用於運行管理命令。 – miraculixx

回答

0

這是因爲subprocess.call只返回執行腳本(documentation)的返回碼。你希望你的腳本返回什麼實際的輸出,所以你應該使用check_output,並避免使用shell=True

subprocess.check_output(["sudo", "./", config.sh]) 

您可能還需要通過sudo修改運行沒有root權限的腳本。它似乎並不是應使用root權限運行

+1

subprocess.check_output解決了這個問題,非常感謝。 –