我一直试图使用Popen
运行一个流程但没有任何成功。代码的部分是:
setCmd=['--set-tag="COMPOSER=J S Bach"', '--set-tag="ALBUM=Goldbergovske variace BWV 988"', '--set-tag="TRACKNUMBER=01"', '--set-tag="TITLE=Aria"']
pipe = subprocess.Popen(["metaflac"] + setCmd + [file],stdout=subprocess.PIPE)
似乎metaflac没有运行。一个简单的测试
pipe = subprocess.Popen(["metaflac"] + ["--version"],stdout=subprocess.PIPE)
很好地表明问题可能出在setCmd
。更具体地说,我认为引用几乎总是麻烦的来源。
我如何更正代码?
我也尝试了多种变体,例如:
args=" ".join(setCmd)
然后添加并附加args
以便我可以像以下一样运行它:
pipe = subprocess.Popen(args,stdout=subprocess.PIPE)
,其中
args='metaflac --set-tag="COMPOSER=J S Bach" --set-tag="ALBUM=Goldbergovske variace BWV 988" --set-tag="TRACKNUMBER=01" --set-tag="TITLE=Aria" filename.flac'
也不起作用。
答案 0 :(得分:1)
您是想在args
行中使用Popen
代替pipe = subprocess.Popen(["metaflac"] + setCmd + [file],stdout=subprocess.PIPE)
吗?
setCmd
此外,您可能需要删除setCmd=['--set-tag=COMPOSER=J S Bach',
'--set-tag=ALBUM=Goldbergovske variace BWV 988',
'--set-tag=TRACKNUMBER=01',
'--set-tag=TITLE=Aria']
元素中的双引号;即,
metaflac
在将命令输入终端时,它们非常重要,因为它们让shell知道如何拆分参数,但是,在这里,您已经将参数拆分为字符串列表。 {{1}}可能能够处理它们,但可能不会。