2013-10-27 2 views
2
endofprogram=False 
try: 
    filename=input("Enter filename: ") 
    infile=open(filename,"r") 
except IOError: 
    print("Error reading file! Program ends here!") 
    endofprogram=True 
if endofprogram==False: 
    highest=0.0 
    for line in infile: 
     line=line.strip('\n') 
     if(line!="") and (line[0]!='#'): 
      name,grade=line.split('\t') 
      if(float(grade)>highest): 
       highest=float(grade) 

       hname=name 
     record=(hname,highest) 

     print(record) 
     infile.close() 

우리는 지금 comp sci 파일에서 작업하고 있습니다. 이 프로그램은 "File1.txt"라는 이름의 특정 .txt 파일에서 최고 등급을 찾아야합니다.파이썬에서 텍스트 파일 읽기

#fname lname grade 
Charlie Watson 8 
Alice Brown  8.5 
#Comments 

Francene Walk 9 
Robert Wilson 7 
Evelyn Stewart 10 
Gordon Rogers 8.5 

그래서이 파일을 프로그램을 통해 액세스하려면 클래스에서 가르친 것처럼 동일한 폴더에 있어야합니다. 그러나 프로그램을 통해 입력으로 올바른 파일 이름을 입력하면 "파일을 읽는 중 오류가 발생합니다!"라는 메시지가 나타납니다. 메시지가 표시됩니다. Mac을 사용하고 있기 때문에 OSX에서 파이썬을 통해 파일을 읽는 다른 방법이 있습니까?

+1

올바른 파일 이름을 입력 했습니까? 당신이'infile = open ("File1.txt")' – kren470

+1

"을 쓰면 프로그램이 예외를 던지나요? Mac을 사용하고 있고 OSX에서 파이썬을 통해 파일을 읽는 다른 방법이 있기 때문에 프로그램에 문제가 있습니까? - 아니, 아니. – jwodder

+0

예 올바른 파일 이름입니다. 내가 말한대로, 프로그램과 .txt 파일이 같은 폴더에 있다면 작동해야합니다. –

답변

0

파이썬 2 인 경우 raw_input이 아닌 input이 필요합니다.

일반적으로 프로그램을 개발할 때 except 절의 마지막에 raise을 사용하는 것이 좋습니다. 이로 인해 원래 예외가 발생하고 잘못된 점이 무엇인지 잘 보여줍니다.

+3

'input()'은 그가 사용하는 Python의 버전에 따라 다르다. – kren470

+0

감사합니다, 당신 말이 맞아요, 그에 따라 내 대답을 편집했습니다. –