Не удается отправить значения входных аргументов с помощью подпроцесса Python Windows 10

#python #windows #subprocess

#python #Windows #подпроцесс

Вопрос:

Я запускаю основной скрипт в Windows 10, который вызывает другой скрипт, называемый audioplayer.py использование subprocess модуля на python.

Я хочу отправить некоторые входные аргументы при вызове audioplayer.py. Итак, я написал основной скрипт следующим образом:

Ниже приведен основной сценарий:

 from subprocess import call
call(["python", "C:/Users/Jeff/Documents/audioplayer.py", "hey.wav"])
  

Ниже приведен мой audioplayer.py:

 """OpenAL playback example."""
import os, sys, time
from openal.audio import SoundSink, SoundSource
from openal.loaders import load_wav_file

if len (sys.argv) < 2:
    print ("Usage: %s wavefile" % os.path.basename(sys.argv[0]))
    print ("    Using an example wav file...")
    dirname = os.path.dirname(__file__)
    fname = os.path.join(dirname, "default.wav")
else:
    fname = sys.argv[1]

sink = SoundSink()
sink.activate()

source = SoundSource(position=[10, 0, 0])
source.looping = True

data = load_wav_file(fname)
source.queue(data)

sink.play(source)

source.position = [source.position[0], source.position[1], source.position[2]]
sink.update()
time.sleep(2)

print("playing at %r" % source.position)
  

Но я продолжаю получать следующую ошибку, даже если файл существует в том же каталоге, что и audioplayer.py

 FileNotFoundError: [Errno 2] No such file or directory: 'hey.wav'
  

Если я удалю hey.wav в основном скрипте, он будет работать нормально. Похоже, что он просто не принимает никаких аргументов.

Комментарии:

1. 'hey.wav' это относительный путь, но он не относится к файлу py — он относится к текущему рабочему каталогу.

Ответ №1:

попробуйте это:

 call(["python", "C:/Users/Jeff/Documents/audioplayer.py", "C:/Users/Jeff/Documents/hey.wav"])
  

При запуске последнего из них каталог совпадает с main.py вместо audioplayer.py.