我们正在努力将现有的python实用程序写入Scala。实用程序从REST API以“ .gzip”文件下载压缩数据。
Python代码:
response=requests.get(url,stream=True,headers=self.header,proxies=config.PROXIES,timeout=config.TIMEOUT)
with open(file_path, 'wb+') as f:
shutil.copyfileobj(response.raw, f)
在scala中,我是这样写的:
var out: GZIPOutputStream = new GZIPOutputStream(new FileOutputStream(outputFile))
var writer= new PrintWriter(out)
try {
val inputStrem: InputStream = response.getEntity.getContent
val gzipInputStream = new GZIPInputStream(inputStrem)
for(line <- Source.fromInputStream(gzipInputStream).getLines){
writer.write(line+"\n")
}
} catch {
case e: Exception => throw e
}finally {
if (writer != null) writer.close
}
但是每次使用scala代码生成的输出文件大小都不同。 Python代码运行正常。 两种工具的REST POST和GET请求相同。 我在scala中没有收到任何错误,它已成功执行,但是创建了不同大小的文件。 任何帮助将不胜感激。
谢谢!!
答案 0 :(得分:0)
如果这是Apache HTTP,则ufs put scrollbit.py
ufs put main.py
有一个HttpEntity
方法将内容直接写到writeTo
。
OutputStream
这不会像原始Scala那样重新编码数据,但是Python版本也不会这样做。