子进程调用不起作用
subprocess call not working
我这里有这个代码
pifm.py
#!/usr/bin/python
from subprocess import call
def play_old( filename ):
call(["./pifm ", filename, "88.0", "88307"])
return
def play_message():
call(["./WelcomeMessage"])
return
Run.py
#Import
import pifm
import glob, os
import random
#Setup Vars
songs = [""]
randomNum = 0
#Find Music in directory
os.chdir("Music")
for file in glob.glob("*.wav"):
songs.append(file)
os.chdir("..")
while True:
randomNum = random.randint(1,len(songs)-1)
print("Playing Song: " + str(songs[randomNum]))
pifm.play(str(songs[randomNum]))
pifm.play_message()
每次我 运行 它总是抛出这个错误,我无法弄清楚为什么
Traceback (most recent call last):
File "run.py", line 19, in <module>
pifm.play(str(songs[randomNum]))
File "/home/pi/PyRate-Radio/pifm.py", line 6, in play
call(["./pifm ", filename, "88.0", "88307"])
File "/usr/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
有什么想法吗?
您只传递了 wav 文件的文件名,不包括 Music
目录名。
还要注意对调用语句的更改,文件名在双引号中以处理带空格的文件名,并且(显然)确保这 2 个脚本是可执行的。
pifm.py
#!/usr/bin/python
from subprocess import call
def play( filename ):
call("./pifm "+'"'+filename+'"'+" 88.0"+" 88307", shell=True)
return
def play_message():
call("./WelcomeMessage")
return
run.py
import pifm
import glob, os
import random
#Setup Vars
songs = [""]
randomNum = 0
#Find Music in directory
for file in glob.glob("Music/*.wav"):
songs.append(file)
while True:
randomNum = random.randint(1,len(songs)-1)
print("Playing Song: " + str(songs[randomNum]))
pifm.play(str(songs[randomNum]))
pifm.play_message()
我这里有这个代码
pifm.py
#!/usr/bin/python
from subprocess import call
def play_old( filename ):
call(["./pifm ", filename, "88.0", "88307"])
return
def play_message():
call(["./WelcomeMessage"])
return
Run.py
#Import
import pifm
import glob, os
import random
#Setup Vars
songs = [""]
randomNum = 0
#Find Music in directory
os.chdir("Music")
for file in glob.glob("*.wav"):
songs.append(file)
os.chdir("..")
while True:
randomNum = random.randint(1,len(songs)-1)
print("Playing Song: " + str(songs[randomNum]))
pifm.play(str(songs[randomNum]))
pifm.play_message()
每次我 运行 它总是抛出这个错误,我无法弄清楚为什么
Traceback (most recent call last):
File "run.py", line 19, in <module>
pifm.play(str(songs[randomNum]))
File "/home/pi/PyRate-Radio/pifm.py", line 6, in play
call(["./pifm ", filename, "88.0", "88307"])
File "/usr/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
有什么想法吗?
您只传递了 wav 文件的文件名,不包括 Music
目录名。
还要注意对调用语句的更改,文件名在双引号中以处理带空格的文件名,并且(显然)确保这 2 个脚本是可执行的。
pifm.py
#!/usr/bin/python
from subprocess import call
def play( filename ):
call("./pifm "+'"'+filename+'"'+" 88.0"+" 88307", shell=True)
return
def play_message():
call("./WelcomeMessage")
return
run.py
import pifm
import glob, os
import random
#Setup Vars
songs = [""]
randomNum = 0
#Find Music in directory
for file in glob.glob("Music/*.wav"):
songs.append(file)
while True:
randomNum = random.randint(1,len(songs)-1)
print("Playing Song: " + str(songs[randomNum]))
pifm.play(str(songs[randomNum]))
pifm.play_message()