Talk:Судьба/Ночь схватки:Чистка скриптов
Скрипт на Python
Скрипт на Python, по-моему только word wrap убьет. Ещё нужно убивать всё что в квадратных скобках, а также все строки, начинающиеся на @ вместе с символом возврата каретки. Строки типа *page заменять убивать, н осимвол возврата каретки оставлять. --Rung 15:46, 11 May 2008 (PDT)
Скрипт мой, поэтому я отвечаю за свои слова: "сохраняющим только отображаемый текст из всех *.ks-файлов в каталоге, куда он помещен". Питон отличается высокой читабельностью кода, поэтому я не думал, что скрипт придется комментировать...
import os #импорт необходимого модуля
def debrack(line): #функция, вырезающая фрагменты между квадратными скобками в переданной ей строке
start = line.find('[')
end = line.find(']')
if start == -1: return line
if start < end: return line[:start]+line[end+1:]
return ''
files = [] #инициализация списка для сбора *.ks-файлов
for file in os.listdir(os.getcwd()): #обход списка всех файлов в каталоге со скриптом
if file.endswith('.ks'): files.append(file) #...и его фильтрация - выбор только *.ks-файлов
if len(files) == 0:
print 'No *.ks file(-s) to decode in current directory!' #*.ks-файлы в текущем каталоге не найдены
exit()
for file in files: #обработка каждого найденного *.ks-файла
print file,
raw = open(file, 'rb')
res = open(file.replace('.ks', '.txt'), 'wb') #если такой *.txt-файл уже существует, он будет перезаписан!
for line in raw:
if line.find('\x00[\x00w\x00r\x00a\x00p\x00 \x00t\x00e\x00x\x00t\x00=\x00"\x00"\x00]') >= 0:
#отбираются только строки, начинающиеся с [wrap text=""]
templine = debrack(line) #из строки убирается первый фрагмент в квадратных скобках
for i in range (1,100): #макс.100 итераций - защита от зацикливания на строке
newline = debrack(templine) #из строки удаляются следующий фрагмент
if newline == templine: #если результат такой же, в строке скобок не осталось
res.write(newline.replace('\x00', '')[2:]) #поэтому записываем её в файл
break
else: #был убран еще один фрагмент, поэтому обрабатываем строку дальше
templine = newline #постепенно оставляя в ней только текст
raw.close()
res.close()
print '-> '+file.replace('.ks', '.txt') #сообщение пользователю, чтобы не заскучал
Скрипт писал исключительно для себя, поэтому рюшек типа обработки ошибок и справки не предусмотрено. Работоспособность проверена неоднократно на разных машинах.
Тем не менее, прошу сообщать сюда, если вдруг возникнут какие-либо проблемы. Например, я не знаю, есть ли в игре фразы в квадратных скобках (по идее, их быть не должно, но я не проверял) - если есть, при обработке они будут вырезаны.
Const2k 00:25, 12 May 2008 (PDT)