Все это довольно легко сделать с помощью стандартного Python, но для файлов "excel" (xls или xlsx) - для этого вам потребуется установить стороннюю библиотеку.Однако если вам нужна только 2D-таблица, которая может открываться на электронной таблице, вы можете использовать файлы с разделителями-запятыми (CSV) - они совместимы с Excel и другим программным обеспечением для электронных таблиц и интегрированы в Python.
Какдля поиска строки внутри файла это просто.Вам может даже не понадобиться регулярные выражения для большинства вещей.Какую информацию вы хотите вместе со строкой?
Кроме того, модуль "os" в этой стандартной библиотеке имеет некоторые функции для вывода списка всех файлов в каталоге или в дереве каталогов.Наиболее простым является os.listdir (путь)
Строковые методы, такие как «count» и «find», могут использоваться за пределами «in», чтобы найти строку в файле или подсчитать количество вхождений.
И, наконец, модуль "CSV" может написать правильно отформатированный файл для чтения в электронной таблице.
В то же время вы можете злоупотреблять встроенными объектами списка python как простым способомманипулировать наборами данных вокруг.
Вот пример программы, которая подсчитывает строки, заданные в командной строке, найденные в файлах в заданном каталоге, и собирает из них таблицу .CSV:
# -*- coding: utf-8 -*-
import csv
import sys, os
output_name = "count.csv"
def find_in_file(path, string_list):
count = []
file_ = open(path)
data = file_.read()
file_.close()
for string in string_list:
count.append(data.count(string))
return count
def main():
if len(sys.argv) < 3:
print "Use %s directory_path <string1>[ string2 [...]])\n" % __package__
sys.exit(1)
target_dir = sys.argv[1]
string_list = sys.argv[2:]
csv_file = open(output_name, "wt")
writer = csv.writer(csv_file)
header = ["Filename"] + string_list
writer.writerow(header)
for filename in os.listdir(target_dir):
path = os.path.join(target_dir, filename)
if not os.path.isfile(path):
continue
line = [filename] + find_in_file(path, string_list)
writer.writerow(line)
csv_file.close()
if __name__=="__main__":
main()