没有有关使用cdparanoia的Python中的音频cdrom的输出信息

问题描述 投票:0回答:1

我正在为我的配偶开发两个简单的Python应用程序(在具有7英寸触摸屏的Raspberry Pi 4+上)。网络广播仍然可以正常运行。

现在是时候为她的旧音频CD集合附加一个应用了。但是直到今天我仍无法解决这个问题。

我想知道上面有多少首曲目,所以我可以选择其中一首来播放。

我的最后希望是使用shell命令来完成。当然,该命令在UNIX环境中可以很好地工作,但在Python中则不能。而且我不明白我犯了什么错误。可能是.decode('UTF-8')方法的问题吗?令我惊讶的是,在执行command_2几秒钟后,cdrom开始运行几秒钟。但是在命令行中使用命令的行为相同。在命令执行期间是相当。

[如果有人有帮助的想法/解决方案,或者可以告诉我我有什么误解,那将是非常好的。

import subprocess
from subprocess import PIPE

command_1 = ("ls", "-l")
result = subprocess.run(command_1, stdout=PIPE, stderr=PIPE)
out = result.stdout
err = result.stderr

for line in out.decode('utf-8').splitlines():
    print("Result", line)

# up to here everything works nice as expected

# trying to run my favorite, I come into trouble
command_2 = ["cdparanoia", "-sQ"]
result = subprocess.run(command_2, stdout=PIPE, stderr=PIPE)
out = result.stdout
err = result.stderr

for line in out.decode('utf-8').splitlines():
    print("Result", line)

command_1的输出是一个众所周知的示例,您将在各处看到它。

command_2的输出

/home/pi/PycharmProjects/cd/venv/bin/python /home/pi/PycharmProjects/cd/cdrom.py

Process finished with exit code 0

对我来说,这似乎不太有用。

在命令行中运行command_2显示了我所期望的:

pi@raspberrypi:~ $ cdparanoia -sQ
cdparanoia III release 10.2 (September 11, 2008)

Table of contents (audio tracks only):
track        length               begin        copy pre ch
===========================================================
  1.    22190 [04:55.65]       55 [00:00.55]    no   no  2
  2.    11350 [02:31.25]    22245 [04:56.45]    no   no  2
  3.    20567 [04:34.17]    33595 [07:27.70]    no   no  2
  4.    23500 [05:13.25]    54162 [12:02.12]    no   no  2
  5.    16985 [03:46.35]    77662 [17:15.37]    no   no  2
  6.    27358 [06:04.58]    94647 [21:01.72]    no   no  2
  7.    15880 [03:31.55]   122005 [27:06.55]    no   no  2
  8.    38797 [08:37.22]   137885 [30:38.35]    no   no  2
  9.    11043 [02:27.18]   176682 [39:15.57]    no   no  2
TOTAL  187670 [41:42.20]    (audio only)

pi@raspberrypi:~ $

要先解决这个问题:😢

cdparanoia -sQ > file.txt

不起作用,甚至在命令行上也不起作用。也许命令cdPARANOIA的名称是有原因的? 😄

python subprocess raspberry-pi4
1个回答
0
投票

我找到了解决问题的方法。我没有意识到输出屏幕的颜色是RED。红色表示PyCharm中的错误。 这给了我一个主意,这可能是错误输出。下一步,我在命令行上使用了以下命令:cdparanoia -Q 2>&1 | tee /home/pi/toc.txt。这样就产生了一个文本文件,我现在可以将其用于进一步的编程。也许这可能对其他任何CDrom发烧友有所帮助。这是我的测试文件,以获取更多信息:

import os

test = 4

if test == 1:      # RED text
    command = "cdparanoia -Q"

elif test == 2:    # WHITE text
    command = "cdparanoia -Q 2>&1"

elif test == 3:    # WHITE text, but no text file, the output needs to be doubled
    command = "cdparanoia -Q 2>&1 /home/pi/toc.txt"

elif test == 4:    # WHITE text and a textfile
    command = "cdparanoia -Q 2>&1 | tee /home/pi/toc.txt"

print("Test ", test, os.system(command))
© www.soinside.com 2019 - 2024. All rights reserved.