Python объединяет «большой» файл

1

В python я прочитал файл в списке с помощью file.readlines(), позже после некоторой логики, я хотел бы поместить его обратно в строку, используя fileString = ''.join(file), по какой-то причине, даже без print, он выводит файлString на консоль до определенной точки, а затем просто останавливается. Он не запускает остальную часть программы, которая мне не подходит.

Почему соединение делает это, как мне возможно pre- выделять, сколько памяти я хотел бы использовать в моем списке/строке, чтобы она не останавливалась. Или другое решение тоже.

Спасибо

  • 0
    извините, readlines() используется. делает список. Я просто использую общие имена здесь, но я не использую системные имена в моем фактическом коде
  • 0
    Вы не должны также использовать системные имена в примере кода - это может привести к тому, что люди ошибся в том, где находится ошибка.
Показать ещё 1 комментарий
Теги:
string
list
join
memory

2 ответа

2
Лучший ответ

Файл - это указатель вашего файла в памяти. Когда вы пытаетесь присоединиться к нему, у вас на самом деле нет строки для работы.

Как насчет этого?

with open(file, 'rb') as myfile:
    strings = myfile.readlines()

# do your stuff to strings
filestring = ''.join(strings)

Обратите внимание, что строки - это список таких строк:

['моя строка \n', 'моя другая строка! \n']

И как таковой, для большого файла потребуется довольно много памяти. Вы можете лучше обслуживать, создав мини-фильтр.

  • 1
    На самом деле, если вы еще не прочитали файл, вы можете использовать ''.join(myfile) ; он возвращает строку так же, как и myfile.read() .
  • 0
    ложная тревога, именно plistLib вызывает ошибку :( IOError: [Errno 63] File name too long:
Показать ещё 3 комментария
0

Вы также должны рассмотреть, что вы собираетесь делать с результирующей строкой. Если вы просто хотите записать содержимое обратно в файл, сначала не нужно присоединяться к частям, вы можете напрямую использовать file.writelines(strings).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню