fork(1) download
  1. import os, sys, getopt
  2. import re
  3. import glob
  4.  
  5. def get_full_path(path, pattern):
  6. for (dirpath, dirnames, filenames) in os.walk(path):
  7. match = re.search(pattern, dirpath)
  8. for filename in filenames:
  9. if filename.endswith(('.c', '.h')):
  10. yield os.path.join(dirpath, filename)
  11.  
  12. def read_file(file, pattern):
  13. with open(file, 'r') as outfile:
  14. for line in outfile:
  15. match = re.compile(str(pattern)).match(line)
  16. if match:
  17. print(file + " " + match.group())
  18.  
  19.  
  20. def main(argv):
  21. path, f_pattern, s_pattern = '', '', ''
  22. try:
  23. opts, args = getopt.getopt(argv,"hi:p:f:s:",["ifile=","file_pattern=","string_pattern="])
  24. except getopt.GetoptError:
  25. print 'test.py -i <path> -p <pattern>'
  26. sys.exit(2)
  27. for opt, arg in opts:
  28. print(opt, arg)
  29. if opt == '-h':
  30. print 'test.py -i <path>'
  31. sys.exit()
  32. elif opt in ("-i", "--ifile"):
  33. path = arg
  34. elif opt in ("-f", "--file_pattern"):
  35. f_pattern = arg
  36. elif opt in ("-s", "--string_pattern"):
  37. s_pattern = arg.encode().decode('unicode_escape')
  38. print(s_pattern)
  39.  
  40. files = get_full_path(path, f_pattern)
  41. for file in files:
  42. read_file(file, s_pattern)
  43.  
  44. if __name__ == "__main__":
  45. main(sys.argv[1:])
  46.  
Success #stdin #stdout 0s 9024KB
stdin
Standard input is empty
stdout
Standard output is empty