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

时间:2015-10-19 04:36:59

标签: python file int

我正在开发一个程序来下载"大文件"从互联网(从200mb到5Gb)使用线程和file.seek找到偏移并将数据插入主文件,但是当我尝试将偏移设置在2147483647字节之上(超过C长最大值)时,它给出 int太大而无法转换为C long 错误。我该如何解决这个问题? Bellow是我的脚本代码的代表。

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

1 个答案:

答案 0 :(得分:4)

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