разлил текстовые файлы в tsv UTF-8 с заголовками в PowerShell

Я использую приведенный ниже код для разделения огромного файла на 20-килобайтные файлы TSV UTF-8.

Однако мне нужно, чтобы каждый разделенный файл имел заголовок в количестве 20 КБ, как это сделать ?

$sourceFile = "C:\Users\lingaguru.c3\Desktop\Test\DE.txt"
$partNumber = 1
$batchSize = 20000
$pathAndFilename = "C:\Users\lingaguru.c3\Desktop\Test\Temp part $partNumber file.tsv"

[System.Text.Encoding]$enc = [System.Text.Encoding]::GetEncoding(65001)  # utf8 this one

$fs=New-Object System.IO.FileStream ($sourceFile,"OpenOrCreate", "Read", "ReadWrite",8,"None") 
$streamIn=New-Object System.IO.StreamReader($fs, $enc)
$streamout = new-object System.IO.StreamWriter $pathAndFilename

$line = $streamIn.readline()
$counter = 0
while ($line -ne $null)
{
    $streamout.writeline($line)
    $counter +=1
    if ($counter -eq $batchsize)
    {
        $partNumber+=1
        $counter =0
        $streamOut.close()
        $pathAndFilename = "C:\Users\lingaguru.c3\Desktop\Test\Temp part $partNumber file.tsv"
        $streamout = new-object System.IO.StreamWriter $pathAndFilename

    }
    $line = $streamIn.readline()
}
$streamin.close()
$streamout.close()
1
задан 9 April 2021 в 09:40
1 ответ

Когда браузер ведет диалог с сервером в транзакции https ://< server name >, один из первых шагов состоит в том, чтобы сервер показал свой сертификат, чтобы разрешить браузерам проверять, откуда поступают страницы сервера. Браузер решает, что сервер является действительным, если < имя сервера > находится в сертификате, который сервер показывает, и сертификат подписан центром, которому доверяет браузер.

Поле, используемое браузерами для проверки имени сервера, не является CN (общее имя), как ожидалось. По историческим причинам браузеры фактически проверяют, что имя находится в поле " Subject Alternative Names ". То есть, если вы используете сертификат без имени сервера в списке "Subject Alternative Names", браузеры получат ошибку, если попытаются достичь этого имени.

Таким образом, если вы хотите использовать сертификаты для сайта, которые не содержат информации для других сайтов, вы должны использовать другой сертификат для каждого из сайтов, обслуживаемых одним и тем же хостом.

-121--478934-

Нет, нельзя. Установлены статические IP-адреса. В таблице DHCP будут содержаться сведения об аренде DHCP, которые для них не используются.

Они, несомненно, считаются "реальным устройством", как свидетельствует тот факт, что вы можете проверить их.

Если вы хотите, чтобы они отображали аренды, вы, возможно, могли бы рассмотреть использование резервирования DHCP для них - они будут запрашивать IP через DHCP все еще, но маршрутизатор всегда будет поставлять один и тот же IP.

-121--480613-

получил ответ..

$sourceFile = "C:\Users\lingaguru.c3\Desktop\Test\DE.txt"
# using a template filename saves writing
$pathOut    = "C:\Users\lingaguru.c3\Desktop\Test\Temp part {0} file.tsv"
$partNumber = 1
$batchSize  = 20000  # max number of data lines to write in each part
# construct the output filename using the template $pathOut
$pathAndFilename = $pathOut -f $partNumber

$enc       = [System.Text.Encoding]::UTF8
$fs        = [System.IO.FileStream]::new($sourceFile,"Open", "Read")  # don't need write access on source file
$streamIn  = [System.IO.StreamReader]::new($fs, $enc)
$streamout = [System.IO.StreamWriter]::new($pathAndFilename)

# assuming the first line contains the headers
$header = $streamIn.ReadLine()
# write out the header on the first part
$streamout.WriteLine($header)

$counter = 0
while (($line = $streamIn.ReadLine()) -ne $null) {
    $streamout.WriteLine($line)
    $counter++
    if ($counter -ge $batchsize) {
        $partNumber++
        $counter = 0
        $streamOut.Flush()
        $streamOut.Dispose()
        $pathAndFilename = $pathOut -f $partNumber
        $streamout = [System.IO.StreamWriter]::new($pathAndFilename)
        # write the header on this new part
        $streamout.WriteLine($header)
    }
}
$streamin.Dispose()
$streamout.Dispose()
$fs.Dispose()
0
ответ дан 24 April 2021 в 01:03

Теги

Похожие вопросы