相互にインポートする関数と辞書をインポートするにはどうすればよいですか。これらの 2 つのファイルは既に同じディレクトリにあるため、sys をインポートする nid はありません。また、これは再帰的であるため、インポートできません。再帰的にしてエラーを発生させずに、互いのファイルから辞書をインポートするにはどうすればよいですか?
ここでこのWebサイトにアクセスしましたが、質問に答えず、ガイドとなるサンプルコードも提供しなかったため、問題を説明するテストコードを使用してこの質問を作成しました。
次の 2 つのファイルがあるとしましょう: boxA と boxR、それぞれに辞書 keyA と keyR と、generatekeyA と generatekeyR という名前の関数があります。
ボックスA:
import json
from tinydb import TinyDB, Query
from boxR import keyR
def generatekeyA():
keyA = {}
serialnoA = 'Serial_noA'
secretidA = 'Secret_idA'
count = 0
while (count <5):
serial = generate key
id = generate id
keyA[serialnoA].append(serial)
keyA[secretidA].append(id)
with open("/home/pi/Desktop/json/output.json", 'w+'):
db = TinyDB('/home/pi/Desktop/json/output1.json')
table = db.table('A KEYS')
db.insert_multiple([{'Serial number A' : keyA[serialnoA]}])
db.insert_multiple([{'Secret id A' : keyA[secretidA]}])
db.insert_multiple([{'Secret id R' : keyR[secretidR]}])
generatekeyA()
boxR:
import json
from tinydb import TinyDB, Query
from boxA import keyA
def generatekeyR():
keyR = {}
serialnoR = 'Serial_noR'
secretidR = 'Secret_idR'
count = 0
while (count <5):
serialR = generate key
idR = generate id
keyR[serialnoR].append(serialR)
keyR[secretidR].append(idR)
with open("/home/pi/Desktop/json/output2.json", 'w+'):
db = TinyDB('/home/pi/Desktop/json/output2.json')
table = db.table('R KEYS')
db.insert_multiple([{'Serial number R' : keyR[serialnoR]}])
db.insert_multiple([{'Secret id R' : keyR[secretidR]}])
db.insert_multiple([{'Secret id A' : keyA[secretidA]}])
generatekeyA()
上記のコードについて説明します。キーを生成する 2 つのファイルがあり、その後、出力を json ファイルにエクスポートする必要があります。output.json ファイルは、keyA 自身のシリアル番号とシークレット ID を出力し、keyR のシークレット ID とその逆のみを output2.json ファイルに出力します。しかし、問題は、再帰的な出力を調査しても、ガイドとしてサンプル コードが提供されていないため、修正方法をまだ理解していないことです。ファイルに多くの変更を加える必要がないように、これにアプローチする最良の方法は何ですか?
エラーは、再帰エラーである可能性があることを示しています。
Traceback (most recent call last):
File "/home/pi/Desktop/boxA.py", line 7, in <module>
from boxR import keyR
File "/home/pi/Desktop/boxR.py", line 11, in <module>
from boxA import keyA
File "/home/pi/Desktop/boxA.py", line 7, in <module>
from boxR import keyR
ImportError: cannot import name 'keyA'