вход Python в другой файл .py - PullRequest
0 голосов
/ 08 декабря 2018

Я нашел скрипт на python, который конвертирует .ttml субтитры в .srt

Я должен запустить его следующим образом:

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(' ', '_')))

Проблема, с которой я сталкиваюсь сейчас, заключается в том, что я не понимаю, как настроить ввод / вывод для папок.

Что я должен искать в коде?там нет функции "ввода".

1 Ответ

0 голосов
/ 08 декабря 2018

В ваших скриптах ищите argv из модуля sys.Вот как вы передаете аргументы извне.Если вы хотите запустить этот процесс в цикле, вы можете либо изменить сценарии, которые он принимает в папке со всем его содержимым в списке, и преобразовать цикл всем содержимым, либо использовать 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

Примечание: написал это просто из предположения, как выглядит ваш скрипт;)

...