当前位置: 代码迷 >> python >> Python:file.seek(10000000000,2000000000)。 Python int太大,无法转换为C long
  详细解决方案

Python:file.seek(10000000000,2000000000)。 Python int太大,无法转换为C long

热度:74   发布时间:2023-06-13 14:07:04.0

我正在开发一个使用线程和file.seek从互联网下载“大文件”(从200mb到5Gb)的程序,以查找偏移并将数据插入到主文件中,但是当我尝试将偏移设置为2147483647字节以上时(超过C long最大值),它会使int太大而无法转换为C long误差。 我该如何解决? 波纹管代表了我的脚本代码。

f = open("bigfile.txt")

#create big file
f.seek(5000000000-1)
f.write("\0")

#try to get the offset, this gives the error (Python int too large to convert to C long)
f.seek(3333333333, 4444444444)

我不会问(因为已经被问了很多)我是否真的找到了解决方案。

我读过有关将其强制转换为int64并使用类似UL的信息,但我不太了解。 希望您能帮忙,或者至少让我想清楚。 的xD

f.seek(3333333333, 4444444444)

第二个参数应该是from_where参数,指示您是否要从以下位置进行搜索:

  • 文件开始, os.SEEK_SET0
  • 当前位置os.SEEK_CUR1 ;
  • 文件末尾, os.SEEK_END2

4444444444 不是允许的值之一。

以下程序可以正常运行:

import os
f = open("bigfile.txt",'w')
f.seek(5000000000-1)
f.write("\0")
f.seek(3333333333, os.SEEK_SET)
print f.tell()                   # 'print(f.tell())' for Python3

并输出预期的3333333333

  相关解决方案