如何在Python中复制C#.read(buffer,0,buffer.Length)

时间:2017-01-26 00:04:17

标签: c# python soap io

昨天我问了一个关于文件流方法What is the Python equivalent to FileStream in C#?的类似问题,但我现在意识到我应该可能已经问过.read函数了。

对于上下文,我尝试使用soap API的流式响应,该API应输出CSV文件。响应输出一个以base 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

1 个答案:

答案 0 :(得分:0)

看起来bytesread = len(openfile.read(4000))是复制bytesRead = remoteStream.Read(buffer, 0, buffer.Length);

的正确方法

感谢DYZ