親愛なるStackflowコミュニティ!UnboundLocalError:割り当て前に参照されるローカル変数 'Control_Type'
私はこの質問が毎週来るのを知っていますが、私の問題の正しい解決策を見つけることができませんでした。
私は未処理のファイルを読み取る関数を作成しようとしています。
コードは次のようになります。
def read_raw(file_name):
f = open(file_name, 'r')
lines = f.readlines()
header = lines[9].rstrip().split('\t')
dicts = {}
for x,y in enumerate(header):
if y == 'FeatureNum'
num_id = x
elif y == 'ProbeName':
probe_name = x
elif y == 'gProcessedSignal':
signal = x
elif y == 'ControlType':
Control_Type = x
for l in lines[10:]:
l = l.rstrip().split('\t')
if l[control_type] == '0':
dicts[l[num_id]] = {'FeatureNum': l[num_id],\
'ProbeName': l[probe_name],\
'gProcessedSignal': l[signal]}
df = pd.DataFrame.from_dict(dicts)
df['Signal'].astype(float)
return df
私はあなたが生のように見えると私はそれから取り出したいか想像できると思います!
今の事は、私のディレクトリからすべてのファイルを呼び出す機能を呼び出すと、リストにそれをすべて入れて、このようなものができ、私がしたい、次のとおりです。
path = os.getcwd()
os.chdir(path)
all_files = glob.glob(os.path.join(path, '*.txt'))
array_list = []
for files in all_files:
arrays = read_raw(files)
array_list.append(arrays)
そして、私はこれを得ました:
if l[Control_Type] == '0':
UnboundLocalError: local variable 'Control_Type' referenced before assignment
この問題を解決する方法はありますか?私も辞書の前にcontrol_typeのグローバルを置こうとしましたが、それもうまくいきませんでした。
私はそれがあなたの機能に混乱する可能性があることを読んだので、しかし、それはグローバルなしでそれを持っていることが望ましいでしょう。
ありがとう、オーストリアで素敵な夜をお祈りしています。
こんにちはPM 2Ring!私はそれをより完全にどのように説明すべきですか?何をもっと説明してほしいですか?それは私のインデントを修正するのに役立ちます:D –
私は実際に少しコードを変更し、それを小さくしましたが、私はすぐにそれを変更します。 Thx PM 2Ring –
これは正しいコードになりました!私はそれほど実際には短縮された名前だけを変更しなかった。機能は動作します。それがあなたを助けている場合、私は自分のコードを書いてAgilent Microarrayの生ファイルを読み込もうとしています:D –