2017-01-26 4 views
0

Вчера я задал аналогичный вопрос о методе filestream, What is the Python equivalent to FileStream in C#?, но теперь я понимаю, что я должен был, вероятно, спрашивать о функции .read.Как реплицировать C# .read (buffer, 0, buffer.Length) в Python

Для контекста я пытаюсь использовать потоковый ответ от мыльного API, который должен выводить CSV-файл. Ответ выводит строку, закодированную в базе 64, и я не знаю, что с ней делать. Также в документации api говорится, что ответ должен быть прочитан буфером-буфером назначения.

Вот контекст в коде. Код был предоставлен документации API,:

byte[] buffer = new byte[4000]; 
bool endOfStream = false; 
int bytesRead = 0; 
using (FileStream localFileStream = new FileStream(destinationPath, FileMode.Create, FileAccess.Write)) 
{ 
    using (Stream remoteStream = client.DownloadFile(jobId, chkFormatAsXml.Unchecked)) 
    { 
    while (!endOfStream) 
    { 
     bytesRead = remoteStream.Read(buffer, 0, buffer.Length); 
     if (bytesRead > 0) 
     { 
       localFileStream.Write(buffer, 0, bytesRead); 
       totalBytes += bytesRead; 
     } 
     else 
     { 
       endOfStream = true; 
     } 
     } 
    } 
} 

Любая помощь будет принята с благодарностью, даже если это просто мне точку в правильном направлении, так как я очень потерял в настоящее время. У меня также был еще один вопрос, связанный сегодня с той же проблемой. Write Streamed Response(file-like object) to CSV file Byte by Byte in Python

+0

Просто сделайте 'remoteStream.read (п)', где 'n' сколько вы хотите прочитать. – DyZ

+0

Спасибо, ты знаешь, как я мог читать один буфер за раз? – jvk777

+0

Что такое «буфер»? Знаете ли вы его размер? Если вы это сделаете, просто прочитайте это много байтов. – DyZ

ответ

0

Похоже bytesread = len(openfile.read(4000)) правильный способ тиражирования bytesRead = remoteStream.Read(buffer, 0, buffer.Length);

Благодарности DYZ