我想更改所有mkv文件的标签。 我安装了MKVToolNix。 我的代码是:
#!/usr/bin python3
# -*- coding: utf-8 -*-
import os
import subprocess
import re
neredebu='/home/pi/hrc2/Film-Dizi/duzenle'
for kokdizin, altdizinler, dosyalar in os.walk(neredebu):
for dosya in dosyalar:
if dosya.endswith('.mkv'):
isim=re.findall('([\w\d.]*)\.[\d]{4}\.m1080p.',dosya)[0]
isim=isim.replace(".", " ")
yil=re.split('[\w\d.]*\.([\d]{4})\.m1080p.',dosya)[1]
title=isim+" - "+yil+" _ www.netmanyagi.com"
dosyayolu=kokdizin
dosyatam=dosyayolu+"/"+dosya
bashCommand = "mkvpropedit "+dosyatam+" --edit info --set \"title="+title+"\""
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
#output = subprocess.check_output(['bash','-c', bashCommand])
print(output)
print("---")
我得到以下输出:
b"Error: More than one file name has been given ('/home/pi/hrc2/Film-Dizi/duzenle/The' and 'Hero').\n"
---
此错误的原因是什么?
答案 0 :(得分:0)
问题是您的.mkv
文件之一在其文件名中包含空格。因此,当您将bashCommand
拆分为一个列表时,会无意间将文件名拆分为两部分。
最简单的方法是重命名文件,使其不包含空格。手动构建列表而不是依靠split()
并确保将文件名用引号引起来也可能更安全。
bashCommand = [
'mkvpropedit',
'"{}"'.format(dosyatam),
'--edit',
'info',
'--set',
'"title={}"'.format(title)
]
process = subprocess.Popen(bashCommand, stdout=subprocess.PIPE)