2013-10-15 4 views
1

사람들이 입력하는 이름이 텍스트 파일인지 테스트 할 루프를 만들고 싶습니다. 필자는 테스트를 실시하지만 사람들에게 파일 이름을 다시 입력하도록 요청하면 전역 파일 이름이 변경되지 않습니다.지역 변수를 전역 변수로 변환

나는 전역 변수와 지역 변수에 대한 질문이지만 변경 방법을 찾을 수는 없다. 다음과 같은

def name(): 
    global f1 
    global t 
    global f2 
    print('File Name') 
    f1 = input() 
    t = match(r'.+(\..+$)',f1) 
    while t.group(1) != '.txt' : 
      print(t.group(1)) 
      print("New file Name") 
      f2 = input() 
      f1 = f2 
      print(f1) 

name() 

답변

2

심지어 왜 그냥 뭔가에 코드를 재 작성하지 않을, 당신은 모든이에 대한 전역 변수가 필요한 이유를 모르는 :

from os.path import splitext 

def get_name(): 
    while True: 
     name = input("File name> ") 
     if splitext(name)[1] != '.txt': 
      print("Invalid name, give another") 
     else: 
      return name 

filename = get_name() 
여기

내 코드입니다
+0

감사 Antti, 나는 글로벌 변수와 로컬 변수로 내 인생을 복잡하게했습니다 나는 대답을 찾기에는 너무 멀었습니다. – Pitchkrak

관련 문제