1 (изменено: ppss42, 2023-12-10 13:49:23)

Тема: AHK: Текстовый файл 4 Гб

Здравствуйте, есть файл 4 гб текстовый. Нужно разбить на несколько файлов. Один файл = одна строка. Пробовал через FileReadLine, но каждая строка длинной примерно 600 тыс. символов. Есть ли возможность использовать другой метод? Также читал про FileOpen, можно побайтово вроде считывать часть файла, но как это сделать, не знаю.

2

Re: AHK: Текстовый файл 4 Гб

А что Вы называете строкой?

3

Re: AHK: Текстовый файл 4 Гб

Вопрос решил вроде, воспользовался помощью ChatGPT. Запустил скрипт и на выходе получил около 4700 файлов. Выборочно проверил, результат устроил.

File := FileOpen("C:\bigFile.txt", "r")
if !File
{
    MsgBox Файл не может быть открыт!
    ExitApp
}

Buffer := ""

while !File.AtEOF()
{
    Fragment := File.Read(800000) ; Читаем фрагмент размером 500000 символов
    Buffer := Buffer . Fragment     ; Добавляем фрагмент в буфер

    ; Проверяем наличие символа перехода на новую строку
    Index := InStr(Buffer, "`n")
	
    while Index
    {
        Line := SubStr(Buffer, 1, Index-1) ; Получаем строку из буфера
        Buffer := SubStr(Buffer, Index+1)  ; Обновляем буфер, удаляя прочитанную строку
		count++
      ;  MsgBox % "Строка: " . Line
		tooltip, %count%
		FileAppend, %Line%, C:\результат\%count%.txt
		; Проверяем остаток буфера на наличие еще одной строки
        Index := InStr(Buffer, "`n")
    }
}

; Обрабатываем последний остаток в буфере
if Buffer != ""
{
    MsgBox % "Строка: " . Buffer
}

4

Re: AHK: Текстовый файл 4 Гб

ypppu Перевод строки (не знаю `n или `r`n уже удалил исходный файл). Файл качал с интернета и сам не знал как данные разбиты. Для этого пришлось поделить 4 гб файл на на части по 10 мб ч/з total comander чтобы посмотреть по какому разделителю ориентироваться.