前提・実現したいこと
python初心者です。
どうか、ご教授お願い致します。
- jsonで読み込んだファイルのディレクトリを作成したいです。
- そしてできたディレクトリの配下にjsonファイルを5個作成します。
- ファイル名は 01.json, 02.json のように連続したファイル名にします。
説明が至らないかと思いますが、よろしくお願い致します。
発生している問題・エラーメッセージ
エラーメッセージ 'NoneType' object is not iterable フォルダはできるのですが、その次のファイル名を作成する時に 上記のエラーがでます。
該当のソースコード
folder_name = './' + re.search('[^\x01-\x7E]+', self.json_path).group() print(folder_name) # ディレクトリを作成する os.makedirs(folder_name) for i, y in enumerate(self.items): file_name = None file_num = i + 1 if file_num < 5: file_name = '0' + str(file_Num) else: file_name = str(file_Num) file = open(dir_name + '/' + file_name + '.json', 'w') json.dump(y, file, ensure_ascii=False, indent=4, sort_keys=True)
###追記
申し訳ございません。 tracebackの意味を理解していません。 なのでエラーメッセージを掲載します。 --------------------- 例外が発生しました: TypeError 'NoneType' object is not iterable File "/Users/Desktop/json.py", line 86, in export for i, y in enumerate(self.items): File "/Users/json.py", line 102, in <module> export() File "/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py", line 85, in _run_code exec(code, run_globals) File "/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py", line 96, in _run_module_code mod_name, mod_spec, pkg_name, script_name) File "/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py", line 263, in run_path pkg_name=pkg_name, script_name=fname) --------------------- このようなエラーがでました。
エラーメッセージはtraceback含めて全文掲載してください
これ、クラスメソッドの一部ですよね。少なくともself.itemsが何者かわからないと答えようがないです。
1から3のうち、どこまでできていてどこができていないのかをご提示されると良いです。また、初心者であれば、まずは1を単体で確認し、できたら2を単体で確認していくように、単純なコードにして全て動きを確認したのち、組み合わせて確認していくとよろしいかと思います。
hayataka2049さん:
エラーメッセージ掲載しました。
tachikomaさん:
クラスメソッドの一部です。self.itemsはjsonファイルの辞書型の中にあるitemsです。
t_obaraさん:
1でディレクトリはできています。debugしたところ、ディレクトリ配下にファイルを作成する際に 'NoneType' object is not iterable が出てしまい、ファイルが作成できない状態です。
self.itemsがNoneになっており、enumerateの引数には出来ません。と言うのがエラーメッセージの意味です。エラー発生時のself.itemsの状態を確認してみて下さい。
ご教授ありがとうございます。
ご指摘の通り、self.itemsの設定の部分が抜けていました。
あと下から2番目のコードもインデントを直しました。if文の中に入っていたのでそこも
直したら、無事にディレクトリの配下にファイルが生成されました。
回答1件
あなたの回答
tips
プレビュー