繁体   English   中英

从多个html文件中读取文本,并合并为另一个html文件python脚本

[英]Reading text from multiple html files and consolidate into a different html file python script

我正在编写一个python脚本,在该脚本中将运行一个循环,并在多个目录中使用名称为'_CriteriaOutput.html'的特定html页面。 每个目录包含多个html文件和带有上述字符串的4-5个html文件。 我想做的是读取具有_CriteriaOutput.html名称的这些html文件,并将其合并为另一个html文件。 我将在下面给出我的代码(到目前为止我所做的一切)。 这段代码读取的html文件的源代码对我来说毫无用处。 我只想要文字(如果html文件中有文字)

import os
import fileinput

NightlyLogs = r'C:/Users/<user>/Desktop/Nightly_Logs/2015_07_16-0940'
dir = [fol for fol in os.listdir(NightlyLogs) if os.path.isdir(os.path.join(NightlyLogs, fol))]
dir = sorted(dir)
for folder in dir:
    HtmlLoc = r'%s/%s' %(NightlyLogs, folder)
    abc = [file for file in os.listdir(HtmlLoc) if file.endswith('_CriteriaOutput.html')]
    for one in abc:
        HtmlFile = r'%s/%s' %(HtmlLoc, one)
        open_file = open(HtmlFile, 'r')
        print open_file.read()

NightlyLogs是一个包含带有CL(更改列表)名称(例如876564或865664等)的文件夹的位置。 每个HTML文件(例如A_CriteriaOutput.html或B_CriteriaOutput.html名称)都包含特定系列的信息(比如说A或B或C等),每个具有特定CL名称的文件夹都包含类似的_CriteriaOutput.html文件,其中仅包含该CL的信息。 我想制作一个表,其中CL为列,A,B,C,D,E为行,其中将包含该特定系列的信息。 我已尝试具体说明,但如果您认为缺少某些信息,请帮助我学习。 我会尽力提供尽可能多的信息。 谢谢。

所以你的问题是

我想制作一个表,其中CL为列,A,B,C,D,E为行,其中将包含该特定系列的信息。

像这样吗

    876564 | 865664 | ...
A |  ...   |  ...   | ...
B |  ...   |  ...   | ...

如果我正确地读你的问题,变更名称(876564,...)是文件夹名称和A,B,......是文件名的一部分,之前_CriteriaOutput.html

首先,我将以与您类似的方式从所有文件中收集数据,最后,您可以根据需要打印它们。

import os
import fileinput

def pretty_print(change_list):
    change_names = []
    for category_name, category_list in sorted(change_list.items()):
        for change_name in category_list.keys():
            if change_name not in change_names: change_names.append(change_name)
    header = ['']
    header.extend(change_names)
    list_of_lists = []
    list_of_lists.append(header)
    for category, category_list in sorted(change_list.items()):
        titles = [category]
        for name in change_names:
            try:
                titles.append(category_list[name])
            except KeyError:
                titles.append('-')
        list_of_lists.append(titles)

    for line in list_of_lists:
        print '\t'.join(line)

change_list = {}
NightlyLogs = r'C:/Users/<user>/Desktop/Nightly_Logs/2015_07_16-0940'
dir = [fol for fol in os.listdir(NightlyLogs) if os.path.isdir(os.path.join(NightlyLogs, fol))]
dir = sorted(dir)
for folder in dir:
    HtmlLoc = r'%s/%s' %(NightlyLogs, folder)
    abc = [file for file in os.listdir(HtmlLoc) if file.endswith('_CriteriaOutput.html')]
    for one in abc:
        change_name = one.split('_')[0]
        if change_name not in change_list:
            change_list[change_name] = {}
        HtmlFile = r'%s/%s' %(HtmlLoc, one)
        open_file = open(HtmlFile, 'r')
        file_content = open_file.read()
        print change_name, '|', folder, '|', file_content
        change_list[change_name][folder] = file_content

print '\nTable of changes:'
pretty_print(change_list)

一些示例数据的输出(首先在读取时打印文件/文件夹名称/内容,然后使用pretty_print()来打印表):

A | 876564 | foo
B | 876564 | foo B
A | 876565 | foobar
B | 876565 | foo
A | 876566 | bar
C | 876566 | bar C

Table of changes:
    876564  876565  876566
A   foo     foobar  bar
B   foo B   foo     -
C   -       -       bar C

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM