我試圖調用一個包含子進程調用bashscript的python類。子進程調用bash腳本
def downloadURL(self,address):
call(['bash youtube2mp3_2.sh', str(address)],shell=True)
這是bash腳本:
#!/bin/bash
# Script for grabbing the audio of youtube videos as mp3.
address=$1
user_name=$2 # todo
path_music=/home/pi/music_loaded
echo Address : $address
#title=$(youtube-dl --get-title $address)
youtube-dl --no-playlist -x --audio-format mp3 -o $path_music/'%(title)s.% (ext)s' $address
echo ----Download finshed----
當調用方法downloadURl我通過一個靜態Youtube鏈接。在python方法中打印他會正確返回。
但腳本中的回聲在consonsole中返回「」。所以我認爲我試圖通過的論據沒有傳遞給腳本。
有沒有人有想法?
除了對可用答案中給出的Python代碼的修復外,該shell腳本確實非常糟糕。考慮通過http://shellcheck.net/運行它並修復它找到的內容。 –
此外,理想情況下,您不應該調用'bash yourscript.sh',而只需調用'yourscript',並讓shebang(在本例中爲'#!/ bin/bash'行)使用什麼樣的解釋器 - 這樣你就可以將程序改寫成完全不同的語言(或者不是一個腳本,而只是一個編譯的二進制文件),而其他調用它的程序不需要知道或關心。 –