即時通訊開發一個程序,使用線程和file.seek從互聯網下載「大文件」(從200MB到5Gb)以找到偏移量並將數據插入主文件,但當我嘗試設置2147483647字節上方的偏移量(超過C long max值)時,它會給int太大而無法轉換爲C long錯誤。我如何解決這個問題?貝婁是我的腳本代碼的代表。Python:file.seek(10000000000,2000000000)。 Python 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
我不知道如何解決你的主要問題,但這裏有一個相關的觀察:我不認爲尋求和寫入文件實際上會「插入」文本 - 相反,我認爲它會覆蓋現有文本在尋求點 – inspectorG4dget
我明白你的意思和它的正確性。我試圖做的是創建一個無用數據的5GB文件(大小取決於下載文件的大小),然後使用指向指定偏移量的file.seek用正確的數據覆蓋它(因爲文件是用幾個線程,我需要將數據寫入該文件的正確位置)。我想我沒有對自己解釋得那麼好。但是,感謝您的回覆;) –
打開文件進行寫入,尋找長途,然後寫入文件在許多文件系統上幾乎不分配空間。結果是一個[稀疏文件](https://en.wikipedia.org/wiki/Sparse_file),它的i節點長度很長,但沒有分配給它的實際磁盤塊。要實際預先分配空間,您需要寫入要分配的每個塊。 – msw