У меня довольно большой текстовый файл, который я бы хотел запустить в кусках. Для того, чтобы сделать это с помощью subprocess
библиотеки, можно было бы выполнить следующую команду оболочки:Как установить размер «chunk» для чтения строк из файла, прочитанного с помощью подпроцесса Python.Popen() или open()?
"cat hugefile.log"
с кодом:
import subprocess
task = subprocess.Popen("cat hugefile.log", shell=True, stdout=subprocess.PIPE)
data = task.stdout.read()
Использование print(data)
выложит все содержимое файла сразу. Как я могу представить количество кусков, а затем получить доступ к содержимому этого файла размером блока (например, chunk = три строки за раз).
Это должно быть что-то вроде:
chunksize = 1000 # break up hugefile.log into 1000 chunks
for chunk in data:
print(chunk)
Эквивалентный вопрос с Python open()
конечно использует код
with open('hugefile.log', 'r') as f:
read_data = f.read()
Как бы вы read_data
в куски?
Спасибо за это. Что такое априори, я не знал о трех строках, но я просто хотел, чтобы файл разбился на '10 ** 7' кусков? – ShanZhengYang
Вы имеете в виду куски 10 ** 7 байт? и вам нужен Попен или нет? это ваш реальный случай с использованием 'cat', или это просто для простоты вопроса? –
Я имею в виду разделить файл на 10 ** 7 разделов, не беспокоясь о размере байта. В приведенном выше примере 'nb_chunks' составляет 1000 байтов --- что, если мы разбираем строки размером 750 байтов каждый, можно ли отрезать некоторые строки? Мне нужен Popen(), да.Кошка - простой пример – ShanZhengYang