[英]Can a text file be updated by two programs simultaneously (live communication)?
我有一個具有c / c#能力的程序,我有python。 我希望該程序幾乎以毫秒為單位更新文本文件,並讓python以毫秒為單位讀取該文本文件。 我怎樣才能實現這一目標?
是否可以通過另一個程序實時更新文本文件並通過python實時閱讀? 有沒有其他方法可以做到這一點,而不是依賴於文本文件。 基本上我想做的是使用python對來自該程序的實時數據進行大量計算,並以命令的形式將這些計算發送回程序。可以在內存中關閉並重新打開並更新文件嗎?
如果你使用subprocess.Popen
從python啟動C / C#進程,那么你的兩個程序可以通過stdin
和stdout
管道進行通信:
c_program = subprocess.Popen(["ARGS","HERE"],
stdin = subprocess.PIPE, # PIPE is actually just -1
stdout= subprocess.PIPE, # it indicates to create a new pipe
stderr= subprocess.PIPE #not necessary but useful
)
然后,您可以使用以下內容讀取流程的輸出:
data = c_program.stdout.read(n) #read n bytes
#or read until newine
line = c_program.stdout.readline()
請注意,這兩種方法都是阻塞方法,盡管存在非阻塞方案 。
另請注意,在python 3中這些將返回bytes
對象,您可以使用.decode()
方法轉換為str
。
然后將輸入發送到進程,您只需寫入stdin:
c_program.stdin.write(DATA)
與上面的read
一樣,在python 3中,此方法需要一個bytes
對象。 在將其寫入管道之前,您可以使用str.encode
方法對其進行編碼。
我對C#的知識非常有限,但是從有限的研究來看,你似乎可以從System.Console.In
讀取數據並將數據寫入System.Console.Out
,盡管如果你在C#中編寫了在終端中運行的程序,那么用於將數據寫入屏幕並從用戶讀取輸入的方法也適用於此處。 (你可以想象.stdout
作為終端屏幕和數據python寫入.stdin
用戶輸入)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.