2017-12-03 7 views
-3

JSONファイルの内容を変更するたびに、その内容を更新(リロード)する関数を作成しようとしています。PythonでJSONファイルをリロードする

私は(obviuously)既にファイルをロードします。

comandos = json.load(open('comandos.json')) 

をしかし、毎回、JSONが更新され、私は再びそれをロード行うためのpythonのプロセスを強制終了する必要があります。

-

スクリプトがループしている、私はボットとしてそれを使用しています更新(ユーザー・グループからの任意のコマンドを待機し、電報にconected)。

この場合、新しい機能(新しいコマンド)をリリースするときに、「comandos.json」ファイルのすべてのコンテンツをロボットが読み込み、テレグラムチャネルで新しいオプションを取得したいと思います。

ありがとうございます。

答えて

-2

編集:このソリューションはファイルを何度も読み込みますが、ライブラリに依存せず、プラットフォームに依存しません。

もっと詳しく教えてください!

になります。もちろん、代替案がありますが、正確なユースケースはわかりません。私はあなたが変更されたファイルをリロードしたいと思う。これは、背景やアップデートファイルを更新したらcomandosで非同期にファイルウォッチャーを開始し

import time 
import threading 
import json 
threading.Thread(target=fileWatcher).start() 

その後、あなたのメインコードで

def fileWatcher(): 
    global comandos, comandosText 
    while True: 
     f = open('comandos.json') 
     content = f.read() 
     f.close() 
     if content != comandosText: 
      print("File was modified! Reloading it...") 
      comandos = json.loads(content) 
      comandosText = content 
     time.sleep(0.5) #Adjust this to get the best performance 

...。

このコードは、そのまま使用する必要があります。

+0

ありがとうございました。私は既に説明を更新しました。私の質問を理解する助けを願っています:-) – cfuentea

+0

すでに動作しています!あなたの助けに感謝し、@ famemanを体験してください! – cfuentea

+0

'mtime'を使って調べたいかもしれません –

0

このファイルを変更するときには、このファイルを再読み込みする必要があります。リロードするときは、watchdogのようなものを使うことができます。

関連する問題