Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Поиск-замена в кодировке dos


Автор: Suppir 22.6.2010, 13:46
Привет!

Подскажите, пожалуйста, код следующей программы (если не сложно):

1. Нужно открыть файл 1.txt (у него кодировка CP866/dos) для чтения
2. Нужно создать новый файл 2.txt в той же самой кодировке DOS для записи
3. Читая каждую строку из 1.txt, записывать ее в 2.txt, если строка начинается с символа "#"



Автор: unicross 22.6.2010, 14:59
Для Python 2:
Код
# -*- coding: cp866 -*-
f = open("2.txt", "w")
for line in open("1.txt", "r"):
    if line.startswith("#"):           # Если пробелы не допустимы
    #if line.lstrip().startswith("#"): # Если пробелы допустимы
        f.write(line)
f.close()
raw_input("OK")

Автор: Suppir 22.6.2010, 15:06
Потестил программу на версии 3.1.  По ходу, скрипт где-то останавливается по неизвестной причине. Потому что 2.txt слишком маленький получается (скрипт не доходит до конца файла). 

Автор: Suppir 22.6.2010, 15:28
В консоли мелькает какая-то ошибка, но разглядеть не могу :(

Автор: shupg 22.6.2010, 16:11
а в try..except обернуть и распечатать (хоть бы и в тот же файл)?

или просто настроить нормальный IDE, типа eclipse

Автор: Suppir 22.6.2010, 16:22
"а в try..except обернуть"
Каюсь, я нуб в Python smile Хотел просто сравнить скорость с Perl  в данной задаче (сделать поиск-замену в больших файлах). 
До этого сравнил Ruby - оказалось, что Ruby 1.9 работает раз в 10 медленней перла на данной конкретной задаче.

Может быть как-то STDERR можно выдать в файл?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)