чтение из нескольких текстовых файлов - вырезать данные и сохранить в xls - PullRequest
2 голосов
/ 06 апреля 2011

Я очень плохо знаком с Python, поэтому ниже я написал следующий код, который позволяет мне искать текстовые файлы в папке, затем читать все строки из нее, открывать файл Excel и сохранять строки чтенияв этом.(Я все еще не уверен, делает ли это это для всех текстовых файлов один за другим) Запустив это, я вижу только текстовые данные файла, которые читаются и сохраняются в файл Excel (первый столбец).Или может случиться так, что он перезаписывает данные из нескольких текстовых файлов в один и тот же столбец, пока не завершится.Может ли кто-нибудь указать мне правильное направление, как заставить его записывать вырезанные данные в следующий доступный столбец в excel через каждый текстовый файл?

import os
import glob

list_of_files = glob.glob('./*.txt')

for fileName in list_of_files:
    fin = open( fileName, "r" )
    data_list = fin.readlines()
    fin.close() # closes file

    del data_list[0:17] 
    del data_list[1:27] # [*:*]

    fout = open("stripD.xls", "w")
    fout.writelines(data_list)
    fout.flush()
    fout.close()

Ответы [ 3 ]

3 голосов
/ 06 апреля 2011

Может конденсироваться в

import glob

list_of_files = glob.glob('./*.txt')

with open("stripD.xls", "w") as fout:
    for fileName in list_of_files:
        data_list = open( fileName, "r" ).readlines()
        fout.write(data_list[17])
        fout.writelines(data_list[44:])

Знаете ли вы, что writelines () не вводит новые строки? readlines () сохраняет новые строки во время чтения, поэтому в элементах data_list, записанных в файл с помощью writelines () , есть новые строки, но последняя не сама вводит новые строки

2 голосов
/ 06 апреля 2011

Эти строки "интересны":

del data_list[0:17] 
del data_list[1:27] # [*:*]

Вы удаляете столько первых из 17 строк вашего входного файла, сколько существует, сохраняя 18-е (если оно существует)удалив еще 26 (если они существуют) и сохранив все следующие строки.Это очень необычная процедура, и она вообще не упоминается в вашем описании того, что вы пытаетесь сделать.

Во-вторых, вы записываете выходные строки (если они есть) из каждого в один и тот же выходной файл.В конце сценария выходной файл будет содержать данные только из последнего входного файла. Не изменяйте свой код для использования режима добавления ... открывать и закрывать один и тот же файл все время только для добавления записей очень расточительно и оправдано, только если у вас есть реальная необходимость убедиться, чтоданные сбрасываются на диск в случае сбоя питания или другого сбоя.Откройте выходной файл один раз, прежде чем начать чтение файлов, и закройте его один раз, когда вы закончите работу со всеми входными файлами.

В-третьих, любой старый произвольный текстовый файл не становится «файлом Excel» только потому, чтоВы назвали это "нечто .xls".Вы должны написать это с помощью модуля csv и назвать его "thing.csv ".Если вам нужен больший контроль над тем, как Excel будет его интерпретировать, напишите файл xls, используя xlwt.

В-четвертых, вы упоминаете «столбец» несколько раз, но так как вы не предоставили никаких подробностей о том, как должны вводиться ваши строки ввода.разделить на «столбцы», довольно сложно догадаться, что вы подразумеваете под «следующий доступный столбец».Можно даже подозревать, что вы путаете столбцы и строки ... при условии, что в каждом входном файле менее 43 строк, 18-й ряд последнего входного файла будет всем, что вы увидите в выходном файле.

2 голосов
/ 06 апреля 2011

Вы можете проверить этот , а также для простых нужд csv .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...