我在python中找到了一个脚本,可以将.srt中的.ttml字幕转换为
我应该运行它的方式是:
python script.py inputsubtitle.ttml > outputsubtitle.srt
我遇到的问题是我无法一次批量处理许多文件,并且如果文件名称中包含空格,它将像以下这样将其切断:
"sub title.ttml" becomes "sub.srt"
我已经写了一些代码来替换空白:
filenames = os.listdir(newpathin)
for filename in filenames:
os.rename(os.path.join(newpathin, filename), os.path.join(newpathout, filename.replace(' ', '_')))
我现在遇到的问题是我不了解如何将输入/输出设置为文件夹。
我应该在代码中搜索什么?那里没有“输入”功能。
答案 0 :(得分:0)
在您的脚本中,从sys模块中查找 argv 。这是您从外部传递参数的方式。如果要循环运行该过程,则可以修改其在列表中包含其所有内容的文件夹中的脚本并循环转换所有内容,或使用subproces.run调用所需脚本的所有文件进行转化。
更新:sys.argv [0]是您的脚本,sys.argv [1]是输入,sys.argv [2]输出。
鉴于sys.argv [1]是输入,而sys.argv [2]已输出。我认为是这样的流程:
import sys
in_file_name = sys.argv[1]
# do transformation and write them to back
tree = ET.parse(in_file_name)
root = tree.getroot()
# more code
out_file_name = sys.argv[2]
# write transformation to this file
您可以传递文件夹路径,而不是传递文件。您需要将上面的转换转换为函数
import glob, os, sys
def transformer(in_file_name):
# do transformation and write them to back
tree = ET.parse(in_file_name)
root = tree.getroot()
# more code
# instead of getting out_file_name from sys.argv[2] like
#out_file_name = sys.argv[2]
# we will generate from in_file_name
out_file_name = in_file_name.split('.')[0] +'.srt'
# write transformation to this file
# let’s do that to all files in that folder
in_path_name = sys.argv[1]
os.chdir(in_path_name)
for file in glob.glob("*.ttml"):
transformer(file)
要运行它,您只需要python myscript.py folder_path
注意:编写此代码完全是出于猜测脚本的外观;)