1# coding: utf8
2import sys			# для разбора аргументов
3import os			# для очистки экрана
4import subprocess		# для функции RHVoice_say
5
6# функция для произношения с использованием Speech Dispatcher
7def RHVoice_say(text):
8  # -e, --pipe-mode (Pipe from stdin to stdout plus Speech Dispatcher)
9  # -w, --wait (Wait till the message is spoken or discarded)
10  p = subprocess.Popen(['spd-say', "-e", "-w"], stdin=subprocess.PIPE)
11  p.communicate(text.encode('utf-8'))
12
13
14# переменные
15filename = sys.argv[1]
16good = ''
17bad = ''
18
19# открываем файл
20try:
21  f = open(filename, 'r')   					# подгружаем файл для чтения
22  line = f.readline()           				# читаем первую строку из файла
23except:
24  print('Ошибка открытия файла')
25  exit()							# завершаем программу
26
27# перебираем весь список
28while line:
29
30  os.system('clear')						# чистим экран
31  print('Проверка набора фраз из:\n'+filename+'\n')
32
33  RHVoice_say(line)						# произносим строку
34
35  os.system('clear')						# т.к. RHVoice_say() выводит текст, то перерисуем вывод
36  print('Проверка набора фраз из:\n'+filename+'\n')
37  print('Фраза:  ' + line)
38
39  print('[1]-хорошо, [2]-плохо, [3]-повторить, [4]-выйти')
40  res = input('Решение: ')					# ждём реакцию
41
42  if res=='1': good += line					# добавим строки в нужные списки
43  if res=='2': bad  += line
44  if res=='4': break						# выходим из цикла
45
46  if (res=='1' or res=='2'): line = f.readline()		# читаем следующую строку, если не нужно повторить
47
48
49print()		# выведем отступ
50
51# если вышли раньше, чем прочитали весь файл, то запишем в файл непроверенные строки
52if line:
53  i=0
54  try:
55    f2 = open(filename + '.rest', 'w+') 			# создаём файл для записи
56    while line:
57      f2.write(line)
58      line = f.readline()
59      i+=1
60    print('Записан файл с остатками: '+ os.path.basename(filename) + '.rest'+ '\nЗаписано: ' + str(i) + ' фраз(а)\n')
61    f2.close()
62  except:
63    print('Ошибка создания файла для записи остатков')
64
65f.close()	# закрываем основной файл, т.к. весь прочитали и он нам больше не нужен
66
67# запишем в файлы результаты нашего труда
68if good!='':
69  try:
70    f3 = open(filename + '.good', 'w+')
71    f3.write(good)
72    f3.close()
73    print('Записан файл с хорошими фразами: '+ os.path.basename(filename) + '.good' + '\nЗаписано: ' + str(good.count('\n')) + ' фраз(а)\n')
74  except:
75    print('Ошибка создания файла для записи хороших фраз')
76
77if bad!='':
78  try:
79    f4 = open(filename + '.bad', 'w+')
80    f4.write(bad)
81    f4.close()
82    print('Записан файл с плохими фразами: '+ os.path.basename(filename) + '.bad' + '\nЗаписано: ' + str(bad.count('\n')) + ' фраз(а)\n')
83  except:
84    print('Ошибка создания файла для записи плохих фраз')
85
86