Python pycurl窗口中的64/32位整数问题
我试图使用pycurl上传一个大文件(>2GB),但遇到了一个奇怪的问题。从64位nix机器(PycURL/7.19.3 libcurl/7.35.0)上载文件时,不会出现任何问题;从64位windows(PycURL/7.19.5.1 libcurl/7.37.0)机器运行相同代码时,上载失败 我遵循了一些指南,确保fs-type(NTFS)支持大文件,确保服务器端的nginx配置正确,但仍然不走运 进一步调试后,我发现从windows计算机发送的底层http请求具有错误的大小属性:Python pycurl窗口中的64/32位整数问题,python,windows,32bit-64bit,libcurl,pycurl,Python,Windows,32bit 64bit,Libcurl,Pycurl,我试图使用pycurl上传一个大文件(>2GB),但遇到了一个奇怪的问题。从64位nix机器(PycURL/7.19.3 libcurl/7.35.0)上载文件时,不会出现任何问题;从64位windows(PycURL/7.19.5.1 libcurl/7.37.0)机器运行相同代码时,上载失败 我遵循了一些指南,确保fs-type(NTFS)支持大文件,确保服务器端的nginx配置正确,但仍然不走运 进一步调试后,我发现从windows计算机发送的底层http请求具有错误的大小属性: Cont
Content-Length: -1320951182
实际文件大小为:2974015488
如果我在windows计算机上签入python cli,我会得到:
>>> type(2974015488)
6: <type 'long'>
>>> type(2974015488)
2: <type 'int'>
>>类型(2974015488)
6:
如果我在linux机器上签入python cli,我会得到:
>>> type(2974015488)
6: <type 'long'>
>>> type(2974015488)
2: <type 'int'>
>>类型(2974015488)
2:
我想我需要在windows机器上以某种方式欺骗pycurl,以将值接受为int,我尝试了使用ctypes的多种变体,并摆弄了sys.maxint和sys.maxsize,但都不起作用
有没有办法告诉python使用64位整数而不是long
谢谢
另外,我需要使用pycurl,因为所有其他选项都会将文件转储到RAM中(是的,甚至是流模式下的请求)我认为您混淆了问题 使用libcurl时,当文件大小大于2GB时,应将其作为curl\u off\t类型传递给选项。在包括win64在内的所有已知64位体系结构上,该类型应为64位
如果pycurl不这样做,那就是错误的。如果它真的这样做了,问题就出在别的东西上了…int和long在python 3中是统一的,您尝试过更改版本吗?升级到v3.4,现在type(2974015488)返回int,但pycurl仍然给出:Content Length:-1320951182 python不识别CURLOPT\u infiresize\u LARGE或curl\u off\t参数,那么您知道下一步该去哪里了…=)