Я бы прочитал содержимое Script.txt
в словарь, а затем использовал бы этот словарь в качестве итерации строк из Speech.txt
и печатать только существующие строки. Это избавляет от необходимости повторять файл несколько раз, что может быть довольно медленным, если у вас большие файлы.
Демонстрация:
from pathlib import Path
with open("Speech.txt") as speech_file, open("Script.txt") as script_file:
script_dict = {}
for line in script_file:
key, _, text = map(str.strip, line.split("|"))
script_dict[key] = text
for line in map(str.strip, speech_file):
filename = Path(line).stem
if filename in script_dict:
print(f"C:\Speech\{line}|{script_dict[filename]}")
Вывод:
C:\Speech\0x000f4a03.wav|Thinking long-term, then. Think she'll succeed?
C:\Speech\0x000f4a07.wav|Son's King of Skellige. Congratulations to you.
C:\Speech\0x000f4a0f.wav|And unites the clans against Nilfgaard?
Его также намного проще использовать с менеджерами контекста операторов для открытия ваших файлов, поскольку вам не нужно вызывать .close()
, чтобы закрыть ваш файл, потому что это обрабатывает это для вас.
Я также использовал pathlib.PurePath.stem
, чтобы получить имя файла из ваших файлов .wav
. Я считаю, что это проще в использовании, чем функции os.path.basename
os.path.spltext
. Хотя это личное предпочтение и все будет работать.
Если мы хотим записать вывод в текстовый файл, мы можем открыть другой выходной файл в режиме записи, используя mode="w"
:
from pathlib import Path
with open("Speech.txt") as speech_file, open("Script.txt") as script_file, open("output.txt", mode="w") as output_file:
script_dict = {}
for line in script_file:
key, _, text = map(str.strip, line.split("|"))
script_dict[key] = text
for line in map(str.strip, speech_file):
filename = Path(line).stem
if filename in script_dict:
output_file.write(f"C:\Speech\{line}|{script_dict[filename]}\n")
output.txt
C:\Speech\0x000f4a03.wav|Thinking long-term, then. Think she'll succeed?
C:\Speech\0x000f4a07.wav|Son's King of Skellige. Congratulations to you.
C:\Speech\0x000f4a0f.wav|And unites the clans against Nilfgaard?
Вы можете взглянуть на Чтение и запись файлов из документации для получения дополнительной информации о том, как читать и писать файлы в python.