【问题标题】:Not able to send input argument values using subprocess Python Windows 10无法使用子进程 Python Windows 10 发送输入参数值
【发布时间】:2020-08-19 00:36:09
【问题描述】:

我正在 Windows 10 上运行一个主脚本,该脚本使用 python 中的 subprocess 模块调用另一个名为 audioplayer.py 的脚本。

我想在调用 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,它运行良好。它似乎不需要任何论据。

【问题讨论】:

  • 'hey.wav' 是一个相对路径,但它不是相对于 py 文件——它是相对于当前工作目录。

标签: python windows subprocess


【解决方案1】:

试试这个:

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

运行最后一个时,目录与 main.py 相同,而不是 audioplayer.py。

【讨论】:

    猜你喜欢
    • 2020-11-15
    • 1970-01-01
    • 2015-01-27
    • 2018-04-12
    • 2012-01-24
    • 1970-01-01
    • 2021-09-18
    • 2018-11-25
    • 1970-01-01
    相关资源
    最近更新 更多