2016-10-25 8 views
0

メインファイルを 'ファイル区切り文字'の存在に基づいてより小さなファイルに分割しようとしています。私は新しい個々のファイルの名前として、この区切り文字に一致するように正規表現を使用しようとすると、以下のように、この新しいファイルにメインファイルの次の行を書き出す:この変数が 'if文'の外で定義されない理由

with open("main_file.txt", 'r') as fhand: 
    mainFile = csv.reader(fhand) 
    for line in mainFile: 
     file_delimeter = "chr[0-9]+" 
     header = re.search(pattern, str(line)): 
     if line == header: 
      smallerFileName = (header.group(0) + ".txt") 
     with open(smallerFileName, 'w') as newFile: 
      datawriter = csv.writer(newFile) 
      datawriter.writerow(line) 

しかし、私は、次のエラーを取得する:

Traceback (most recent call last): 
File "sepFiles.py" (...) 
    with open(smallerFileName, 'w') as newFile: 
NameError: name 'smallerFileName' is not defined 

なぜ正規表現マッチ割り当て「smallerFileNameは」「もしループ」の外で使用することができないように見えるん。?

+0

これを見てください - 参考にしてください:\ http://stackoverflow.com/questions/2829528/whats-the-scope-of-a-python-variable-declared-in-an-if-statement – Dandy

答えて

1

明らかにline == headerは真ではないため、smallerFileNameを決して設定しません。

関連する問題