模拟wc命令统计行和字符的功能。

# vim wc.py

  1. #!/usr/bin/env python 
  2. ''' 
  3.         Author:diege 
  4.         Email:diege@foxmail.com 
  5.         Date:2012-03-04 
  6.         Useage:wc.py filename 
  7. ''' 
  8. #import sys 
  9. #filename=raw_input('Enter FileName:') 
  10. #filename=sys.argv[1] 
  11. from sys import argv as getargv 
  12. filename=getargv[1] 
  13. def CountLines(filename): 
  14.         countlines='' 
  15.         countlines=len(open(filename).readlines()) 
  16.         return countlines 
  17. def ConutChars(filename): 
  18.         conutchars='' 
  19.         conutchars=len(open(filename).readlines()) 
  20.         return conutchars 
  21. def GetFileInfo(filename): 
  22.         countlines=CountLines(filename) 
  23.         conutchars=ConutChars(filename) 
  24.         print 'file:%s,line:%s,chars:%s' %(filename,countlines,conutchars) 
  25. if __name__=='__main__': 
  26.         ''' 
  27.         #debug 
  28.         print filename 
  29.         countlines=len(open(filename).readlines()) 
  30.         conutchars=len(open(filename).readlines()) 
  31.         print 'file:%s,line:%s,chars:%s' %(filename,countlines,conutchars) 
  32.         ''' 
  33.         GetFileInfo(filename) 

总结:

犯了两个错误

1、open(filename) 传入的是变量filename 不要写成open('filename'),不然传入的就是字符串不是变量了

2、关于函数内,本地变量的未定义的问题。

忘记在函数内定义本地变量countlines和conutchars,结果报错变量没有定义。

 

  1. # python wc.py module.py 
  2. Traceback (most recent call last): 
  3.   File "wc.py", line 25, in <module> 
  4.     GetFileInfo(filename) 
  5.   File "wc.py", line 15, in GetFileInfo 
  6.     conutchars=ConutChars(filename) 
  7.   File "wc.py", line 12, in ConutChars 
  8.     return countlines 
  9. NameError: global name 'countlines' is not defined