Guest User

Untitled

a guest
May 24th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. from csv import writer
  2. from os import listdir
  3. from os.path import isfile
  4. from sys import argv
  5. import re
  6.  
  7.  
  8. HTML_FILENAME_REGEX = re.compile(r'.*\.html?')
  9. TITLES = [
  10. 'Имя компьютера',
  11. 'Тип ЦП',
  12. 'Системная плата',
  13. 'Дисковый накопитель',
  14. 'Тип ядра ОС',
  15. ]
  16. TITLES_REGEXPS = [
  17. (
  18. title,
  19. re.compile(
  20. f'<TR>.*<TD>{title}&nbsp;&nbsp;<TD>'
  21. r'(?:<A.*?>)?(?P<value>.*?)(?:</A>)?$',
  22. re.MULTILINE
  23. )
  24. ) for title in TITLES
  25. ]
  26.  
  27.  
  28. def parse(filename):
  29. with open(filename, encoding='windows-1251') as input_file:
  30. data = input_file.read()
  31. row = []
  32. for title, regex in TITLES_REGEXPS:
  33. values = []
  34. for match in regex.finditer(data):
  35. value = match.group('value')
  36. if title != 'Дисковый накопитель' or 'USB Device' not in value:
  37. values.append(value)
  38. if title == 'Имя компьютера':
  39. break
  40. row.append('\n'.join(values))
  41. return row
  42.  
  43.  
  44. def main(files):
  45. if not files:
  46. files = [
  47. filename for filename in listdir('.')
  48. if HTML_FILENAME_REGEX.match(filename) and isfile(filename)
  49. ]
  50. with open('report.csv', 'w', encoding='windows-1251') as output_file:
  51. csv = writer(output_file)
  52. csv.writerow(TITLES)
  53. for filename in files:
  54. row = parse(filename)
  55. csv.writerow(row)
  56.  
  57.  
  58. if __name__ == '__main__':
  59. main(argv[1:])
Add Comment
Please, Sign In to add comment