簡體   English   中英

將文件寫入到確切位置

[英]Write to a file into an exact position

我的主要目標是在許多並行流中寫入一個文件(例如file.txt ),每個流都應從文件的定義偏移量開始。

例子:
腳本 1 - 從位置 0 寫入 10 個字符
腳本 2 - 從位置 10 寫入 10 個字符
腳本 3 - 從位置 20 寫入 10 個字符

我什至沒有達到並行性,因為我一直堅持寫入文件的不同偏移量。 我創建了一個簡單的腳本來檢查我的想法:

file = open("sample_file.txt", "w")
file.seek(100)
file.write("new line")

file.close()

好的,文件已創建,偏移量移至100並添加了句子'new line' 成功。

但是后來我想打開同一個文件並添加一些帶有 offsett 10

file = open("sample_file.txt", "w")
file.seek(100)
file.write("new line")
file.close()

file = open("sample_file.txt", "a")
file.seek(10)
file.write("second line")
file.close()

並且在文件末尾添加了句子'second line' 我確信可以在文件中間的某處添加字符。 任何人都可以幫助解決這個簡單的問題嗎?

或者也許有人知道如何並行執行?

帕維爾

正如這篇文章所暗示的那樣,以'a'模式打開文件將:

開放寫作。 如果文件不存在,則創建該文件。 流位於文件的末尾。 對文件的后續寫入將始終以當前的文件結尾結束,而不管是否有任何中間 fseek(3)或類似內容。

另一方面,模式'r+'會讓你:

開放閱讀和寫作。 流位於文件的開頭。

雖然沒有明確提及,這會讓seek在不同位置的文件,並寫入


無論如何,如果您要並行執行此操作,則必須控制資源。 您不希望 2 個進程同時寫入文件。 關於該問題,請參閱此 SO 問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM