整数是一个
文件描述符
,操作系统用来讨论分配给进程的文件句柄的整数。
0
,请
1
和
2
是
stdin
,请
stdout
和
stderr
,3和以上是进一步使用的文件描述符。
您会收到资源警告,因为您打开了文件句柄,但从不显式关闭它。你只要打电话
.readlines()
或
.readline()
在python文件对象包装器上:
sink_list = os.popen('pacmd list-sinks | grep "name:" | cut --delimiter=: -f2').readlines()
这会让垃圾收集器关闭文件对象,您会收到警告。可以将打开的对象用作上下文管理器,以便为您关闭它:
with os.popen('pacmd list-sinks | grep "name:" | cut --delimiter=: -f2') as list_sinks:
sink_list = list_sinks.readlines()
我个人会用
subprocess
module
处理外部进程,并使用python进行行选择。这样你就可以避免
sh
流程,通常有更好的异常处理:
import subprocess
# read list of sinks
result = suprocess.run(['pacmd', 'list-sinks'], stdout=subprocess.STDOUT, encoding='UTF-8')
sink_list = [l.split(':', 2) for l in result.stdout if 'name:' in l]
# read default sink
result = suprocess.run(['pacmd', 'list'], stdout=subprocess.STDOUT, encoding='UTF-8')
default_sink = next((l.split(':', 2) for l in result.stdout if 'Default sink name' in l), None)