亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

兩個進程實時讀寫同一個文件

兩個進程實時讀寫同一個文件

Go
心有法竹 2023-02-21 19:14:22
我有一個用例,其中一個運行 python 的進程將其執行日志寫入一個文件。Goilang 中運行的另一個進程,想要實時讀取文件的內容,例如日志流。但是為了讀取文件的內容,似乎我必須等到 Python 進程完成。有沒有辦法讓 python 進程正常終止,最后生成日志文件,并將日志流式傳輸到 golang 進程?我的目的是讓python進程日志流到golang進程。
查看完整描述

1 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

1. 簡單的


如果您使用的是 Linux,則將日志從 Python 寫入標準輸出并使用管道。來源.py | 目標(用go寫的)


package main


import (

"bufio"

"fmt"

"os"

)


/*

 Three ways of taking input

   1. fmt.Scanln(&input)

   2. reader.ReadString()

   3. scanner.Scan()


   Here we recommend using bufio.NewScanner

*/


func main() {

// To create dynamic array

arr := make([]string, 0)

scanner := bufio.NewScanner(os.Stdin)

for {

    fmt.Print("Enter Text: ")

    // Scans a line from Stdin(Console)

    scanner.Scan()

    // Holds the string that scanned

    text := scanner.Text()

    if len(text) != 0 {

        fmt.Println(text)

        arr = append(arr, text)

    } else {

        break

    }


}

// Use collected inputs

fmt.Println(arr)

}

用法:


echo "what a wanderful world" |./go-bin 

另請閱讀此Python redirect to StdOut


2.權利。


對于長時間運行的進程,使用命名管道可能更好。這是一個 linux 文件 (FIFO) GNU pipe。


Python 寫入此文件,Golang 讀取 go 中的 FIFO 示例


3. 可能矯枉過正。


編寫 Golang Web 服務器并從 python 調用服務器端點。


如果可以更改 Python 源代碼。


此解決方案還應更加關注安全性。


查看完整回答
反對 回復 2023-02-21
  • 1 回答
  • 0 關注
  • 87 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號