我正在开发一个程序来下载"大文件"从互联网(从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
答案 0 :(得分:4)
f.seek(3333333333, 4444444444)
第二个论点应该是from_where
论证,决定你是否在寻求:
os.SEEK_SET
或0
; os.SEEK_CUR
或1
; os.SEEK_END
或2
。 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
。