2010-11-16 106 views
1
if __name__=="__main__": 
    fname= raw_input("Please enter your file:") 
    mTrue=1 
    Salaries='' 
    Salarieslist={} 
    Employeesdept='' 
    Employeesdeptlist={} 
    try: 
     f1=open(fname) 
    except: 
     mTrue=0 
     print 'The %s does not exist!'%fname 
    if mTrue==1: 
     ss=[] 
     for x in f1.readlines(): 
      if 'Salaries' in x: 
       Salaries=x.strip() 
      elif 'Employees' in x: 
       Employeesdept=x.strip() 
     f1.close() 
     if Salaries and Employeesdept: 
      Salaries=Salaries.split('-')[1].strip().split(' ') 
      for d in Salaries: 
       s=d.strip().split(':') 
       Salarieslist[s[0]]=s[1] 
      Employeesdept=Employeesdept.split('-')[1].strip().split(' ') 
      for d in Employeesdept: 
       s=d.strip().split(':') 
       Employeesdeptlist[s[0]]=s[1] 
      print "1) what is the average salary in the company: %s "%Salarieslist['Avg']    
      print "2) what are the maximum and minimum salaries in the company: maximum:%s,minimum:%s "%(Salarieslist['Max'],Salarieslist['Min']) 
      print "3) How many employees are there in each department :IT:%s, Development:%s, Administration:%s"%(
       Employeesdeptlist['IT'],Employeesdeptlist['Development'],Employeesdeptlist['Administration']) 


     else: 
      print 'The %s data is err!'%fname 

當我輸入一個文件名,但它沒有繼續,爲什麼?如果我輸入一個名爲company.txt的文件,但它總是顯示該文件不存在。爲什麼?關於這個python腳本的問題!

+1

因爲它不?至少不在工作目錄中。 – mpen 2010-11-16 03:35:35

回答

1

您當前的工作目錄不包含company.txt。 可以設置當前的工作目錄或使用絕對路徑。

您可以更改工作目錄,如下所示:

import os 
os.chdir(new_path) 
4

我可以給你一些提示,可以幫助您解決問題,更好地

創建一個函數,並調用它的主要例如

if __name__=="__main__": 
    main() 

不要把整塊if mTrue==1:下,而不是僅僅從功能上返回錯誤例如

def main(): 
    fname= raw_input("Please enter your file:") 
    try: 
     f1=open(fname) 
    except: 
     print 'The %s does not exist!'%fname 
     return 

    ... # main code here 

決不捕獲所有異常,而不是捕獲特定的異常如IO錯誤

try: 
    f1 = open(fname): 
except IOError,e: 
    print 'The %s does not exist!'%fname 

否則捕獲所有異常可能趕上語法錯誤或拼寫錯誤的名稱等

打印你得到,它可能並不總是找不到文件異常,可能是你沒有讀許可或類似的東西,

最後是你的問題可能是公正的,文件可能不存在,嘗試輸入完整的路徑

0

除了具體談談你想趕上你應該視爲捕獲哪些異常EXCE ption對象本身,所以你可以打印它的字符串表示作爲錯誤消息的一部分:

try: 
    f1 = open(fname, 'r') 
except IOError, e: 
    print >> sys.stderr, "Some error occurred while trying to open %s" % fname 
    print >> sys.stderr, e 

(您也可以瞭解特定類型的異常的對象,或許處理 某些種類異常的代碼。您甚至可以從解釋器中捕獲異常以供您自己檢查,以便您可以對它們運行dir(),對於您找到的每個有趣屬性都可以運行type() ...等等。