В python я прочитал файл в списке с помощью file.readlines()
, позже после некоторой логики, я хотел бы поместить его обратно в строку, используя fileString = ''.join(file)
, по какой-то причине, даже без print
, он выводит файлString на консоль до определенной точки, а затем просто останавливается. Он не запускает остальную часть программы, которая мне не подходит.
Почему соединение делает это, как мне возможно pre- выделять, сколько памяти я хотел бы использовать в моем списке/строке, чтобы она не останавливалась. Или другое решение тоже.
Спасибо
Файл - это указатель вашего файла в памяти. Когда вы пытаетесь присоединиться к нему, у вас на самом деле нет строки для работы.
Как насчет этого?
with open(file, 'rb') as myfile:
strings = myfile.readlines()
# do your stuff to strings
filestring = ''.join(strings)
Обратите внимание, что строки - это список таких строк:
['моя строка \n', 'моя другая строка! \n']
И как таковой, для большого файла потребуется довольно много памяти. Вы можете лучше обслуживать, создав мини-фильтр.
''.join(myfile)
; он возвращает строку так же, как и myfile.read()
.
IOError: [Errno 63] File name too long:
Вы также должны рассмотреть, что вы собираетесь делать с результирующей строкой. Если вы просто хотите записать содержимое обратно в файл, сначала не нужно присоединяться к частям, вы можете напрямую использовать file.writelines(strings)
.
readlines()
используется. делает список. Я просто использую общие имена здесь, но я не использую системные имена в моем фактическом коде