私の問題は、基本機能が終了したらプログラムを実行しているということです。ファイルを保存するかどうかを尋ねるポップアップボックスが表示されます。保存ダイアログボックスが表示されます。私が保存しているデータはdict値なので、私はtkinterからErrorを受け取っています。私はどこにdictのがそれらに保存することができますが、私はこの間違った方法について行くか、私のコード内に問題がある読んでいるようにセーブポイントとして ".csv"拡張子を使用しようとしました。そのためTkinterのは、それが辞書を保存できないことを裏投げのPython 3.5 Tkinter dictをファイルに保存する方法
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Lewis Collins\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1550, in __call__
return self.func(*args)
File "C:/Users/Lewis Collins/PycharmProjects/program_06.01.17/Home.py", line 108, in run_language_model
main.flag_detection()
File "C:\Users\Lewis Collins\PycharmProjects\program_06.01.17\main_code\main.py", line 179, in flag_detection
savename = asksaveasfile(file_opt, defaultextension=".csv")
File "C:\Users\Lewis Collins\AppData\Local\Programs\Python\Python35-32\lib\tkinter\filedialog.py", line 423, in asksaveasfile
return open(filename, mode)
TypeError: open() argument 2 must be str, not dict
:
def flag_detection():
total_count = Counter(traffic_light)
total_count.keys()
for key, value in total_count.items():
EWT = tkinter.messagebox.askquestion('File Level', 'Would you like to save')
file_opt = options = {}
options['filetypes'] = [('all files', '.*'), ('text files', '.csv')]
options['initialfile'] = 'myfile.csv'
if EWT == 'yes':
savename = asksaveasfile(file_opt, defaultextension=".csv")
savename.write(key, ':', value)
エラーメッセージ:コードと理由コードの
オリジナルスニペット以下の説明を更新しました
私は問題を引き起こしているstrにdictを変換する以下の解決策を試しました
Tkinterのためをstrに変換する関数の試みのコードスニペット:
def flag_detection():
total_count = Counter(traffic_light)
total_count.keys()
for key, value in str(total_count.items()):
EWT = tkinter.messagebox.askquestion('File Level', 'Would you like to save')
file_opt = options = {}
options['filetypes'] = [('all files', '.*'), ('text files', '.csv')]
options['initialfile'] = 'myfile.csv'
if EWT == 'yes':
savename = asksaveasfile(file_opt, defaultextension=".csv")
savename.write(key, ':', value)
ので、私は非常にJSONを理解していなかったとのdictに変換するstr(total_count.items()):
をしようとして使用するために自分のコードを更新しましたし、それらを読んだ後にライブラリをpickleしてみると、私は必要なものを複雑に思えました。ユーザーが見ることができるようにファイルへの単純な出力です。
私は今、このエラー受け付けております:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Lewis Collins\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1550, in __call__
return self.func(*args)
File "C:/Users/Lewis Collins/PycharmProjects/program_05.0.17/Home.py", line 108, in run_language_model
main.flag_detection()
File "C:\Users\Lewis Collins\PycharmProjects\program_05.0.17\main_code\main.py", line 169, in flag_detection
for key, value in str(total_count.items()):
ValueError: not enough values to unpack (expected 2, got 1)
任意の提案やフィードバックを、事前のおかげで大歓迎です。 asksaveasfile
を呼び出す方法だけではなく、
savename = asksaveasfile(file_opt, defaultextension=".csv")
:
あなたのdictsを保存するために 'pickle'や' json'を使うことができます。 –
@ Jean-FrançoisFabre私はこれらのライブラリを見てきましたが、私はこれらを避け、可能であればビルド済みのPythonライブラリを使いたいと考えています。 –
'csv'は' pickle'や 'json'と同じように組み込まれています。標準パッケージです。さらに良い方法は、テキストファイルに 'str(dictionnary)'を書いてから 'ast.literal_eval'(標準パッケージ)を使って読み込みます。 –