Решил освоить обработку данных в Python и столкнулся с трудностями.
Win7x86, Python33.
исходные файлы доступны для скачивания по следующим ссылкам
http://dl.dropbox.com/u/80844621/PyWinG.py - скрипт с ниже приведенным текстом
http://dl.dropbox.com/u/80844621/test.csv - исходный файл для обработки
Задача следующая.
Беру файл test.csv (разделитель ‘,’).
убираю строчку с названием столбцов.
import csv as csv test_file_object = csv.reader(open('test.csv', 'r')) header = test_file_object.__next__()
Дальше создаю новый файл и копирую туда строки из test.csv с дополнительным полем вначале.
open_file_object = csv.writer(open('pyOne.csv', 'w')) for row in test_file_object: if row[2] == 'female': row.insert(0,'1') open_file_object.writerow(row) else: row.insert(0,'0') open_file_object.writerow(row)
Запускай, интерпретатор отрабатывает синтаксис, ок.
ПРОБЛЕМЫ:
В исходном файле 419 строк с информацией.
Если я запускаю скрипт из IDLE (допустим IDLE (Python GUI)) то получаемый файл pyOne.csv
весит 25 кб и содержит только информацию о 370 строках, причем после каждой строки с информацией
вставляется пустая строка?! Как это выглядит показано на картинках


Если я запускаю скрипт просто двойным щелчков по нему, то выходной файл 28 кб и содержит
информацию о 418 строках (столько сколько нужно). Но, опять же, после каждой информационной строки стоит пустая строка (файл на 418*2 строк итоговый, приходится макросом офисе их убирать уже, чего не хотелось бы делать).
ВОПРОСЫ:
Как не писать пустые строки в выходной файл csv.
Как закрывать файл после запуска скрипта из IDLE, так как пока она запущена, файл доступен только на чтение.
ЧТО Я УЖЕ ДЕЛАЛ:
Проблемы обнаружились когда я писал в PyScript на интерпретаторе Python32. Я поставил IDLE WingIDE 1016, не помогло. Я удалил все IDLE с системы, удалил Python32 и все почистил. Я поставил сегодня Python33 и ситуация повторилась.
*Я сменил в PyScript интерпретатор на внутренний и после первого запуска выдавался файл 25кб, а
“тупо” после повторного 28 кб. Может натолкнет на мысль.
Вот, надеюсь на вашу помощь!