質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

490閲覧

Python returnがNoneとなってしまいます

ragrag

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/03/31 07:42

前提・実現したいこと

Python使用
外部ファイルの関数にてcsvを読み込み、その中身を変数に格納してreturnの戻り値として元ファイルに返したいです。

発生している問題・エラーメッセージ

CONFIG_allがNoneとなり何も返ってきません。
CONFIG_〇〇内には正しい値がある状態です。

該当のソースコード

Python

1from function import initial_setting as iset 2 3CONFIG_all = iset.read_config()

Python

1def read_config(): 2 3 ###dir取得・移動 4 import os 5 os.getcwd() 6 #print(getdir) 7 os.chdir("C:\Users\〇〇") 8 #os.chdir("..\config") 9 10 import pandas as pd 11 12 ###configファイルの読み込み 13 config_table = pd.read_csv("config/config.csv",encoding = "shift_jis") 14 15 ### config変数の作成 16 #config_cnt = len(config_table) 17 18 CONFIG_str = ['CONFIG_data_dir','CONFIG_data_column','CONFIG_time_column','CONFIG_request_url','CONFIG_sas_token'] 19 20 for i in range(len(CONFIG_str)): 21 exec('{} = "{}"'.format(CONFIG_str[i],str(config_table.loc[i,"Value"]))) 22 23 return (CONFIG_data_dir,CONFIG_data_column,CONFIG_time_column,CONFIG_request_url,CONFIG_sas_token)

試したこと

CONFIG_data_column,CONFIG_data_dir,CONFIG_time_column,CONFIG_sas_token,CONFIG_request_url = iset.read_config()や return(CONFIG_data_column)にしてCONFIG_data_column= iset.read_config()等試しましたがNoneのままでした。

各CONFIG_〇〇の値を元ファイルに返すにはどうすれば良いでしょうか。

補足情報(FW/ツールのバージョンなど)

Python 3.8
Spyder 4.2.5

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/03/31 08:10

return直前の各変数の値はどうなっていますか?
ragrag

2021/03/31 08:21

read_config()の中身のみ(importからfor分まで)を実行した場合は、各変数に正しい値が入っている状態です。 しかし、main.py側で from function import initial_setting as iset CONFIG_all = iset.read.config() のみを実行すると、 NameErrror: 'CONFIG_data_dir' is not definedとなってしまいました。
ppaul

2021/03/31 08:55

initial_setting.pyが複数あって、違う方を読んでいるということはないですか?
ragrag

2021/03/31 09:00

functionフォルダ内にはinitial_setting.pyは一つしかないので、別のpyを読んでいるということは無いと思います…
TakaiY

2021/03/31 09:21

main.py を実行したとき、 質問では、Noneとなるとありますが、2つ前では、エラーになると書いてあります。 提示されているコードは同じようですが、どちらが正しいでしょう? また、ppaulさんの指摘の通り、違うファイルを読んでいたりしそうですので、ディレクトリとファイルの構成の情報も提示いただけるといいと思います。 いずれにしても、提示されているread_config()関数が本当に呼ばれているのであれば、Noneは返らないはずです。
ragrag

2021/03/31 10:10

TakaiYさん pythonの変数エクスプローラにNone object?の様な記載があったためNoneと書いてしまいました。 実際はNameErrrorが正しいです。 また、外付けSSDにファイルを移して実行すると何故かうまくいったのでみなさんがおっしゃる様に違うファイルを読んでいるかもしれません。元のディレクトリ構成がおかしくないかもう一度確認してみます…。 うまくいった際の構成は、↓になります F:\Work\1_Soft\○○\Python\devPC\DataConnect\main |-main.py |-main_run.bat |-config | |-----config.csv |-function | |-initial_setting.py | |-monitoring_update.py | |-read.files.py | |-request_http.py | |-header | |-header.csv | |-log
siruku6

2021/04/03 12:45

まずはファイルを分けずに、main内にすべての処理を書いて、うまく動作することが確認できてからファイルを分割してもよいかもしれません。 そうすれば、処理が間違っているのか、ファイル分割の仕方が間違っているのか、どっちが問題なのかが一発でわかると思いますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問