Im пытается вызвать класс python, который содержит вызов подпроцесса для bashscript.Сценарий вызова bash подпроцесса
def downloadURL(self,address):
call(['bash youtube2mp3_2.sh', str(address)],shell=True)
Это Баш скрипт:
#!/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 вернет его правильно.
Но эхо в скрипте вернется в консоль. Поэтому я думаю, что аргумент, который я пытаюсь передать, не передается скрипту.
У кого-нибудь есть идея?
В дополнение к исправлениям для кода Python, указанным в доступном ответе, этот сценарий оболочки действительно ужасен. Попробуйте запустить его через http://shellcheck.net/ и зафиксировать, что он находит. –
Кроме того, в идеале вы не должны называть 'bash yourscript.sh', а просто вызывать' yourscript' и позволять shebang (в этом случае использовать строку '#!/Bin/bash') для определения какой интерпретатор использовать - таким образом вы можете переписать свою программу на совершенно другой язык (или вообще не быть скриптом вообще, кроме скомпилированного двоичного кода), а другие программы, вызывающие его, не должны знать или ухаживать. –