2015-07-20 39 views
1

我正在寫一個python腳本,其中一個循環將運行並通過名稱中的字符串'_CriteriaOutput.html'在多個目錄中查找特定的html頁面。每個目錄包含多個html文件和包含上述字符串的4-5個html文件。我想要做的就是用'_CriteriaOutput.html'名稱讀取這些html文件,並將其合併到不同的html文件中。我會在下面給我的代碼(無論我迄今爲止做了什麼)。這段代碼讀取了我無用的html文件的源代碼。我想只有文字(如果HTML文件中的任何存在)從多個html文件中讀取文本併合併到不同的html文件中python腳本

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作爲行的表,其中將包含該特定系列的信息。我試圖具體,但如果你認爲一些信息缺失,請幫助我學習。我會盡力提供儘可能多的信息。謝謝。

+0

從字符串[地帶HTML可能重複在Python中](http://stackoverflow.com/questions/753052/strip-html-from-strings-in-python) – SuperBiasedMan

+0

我找不到我的問題在上面提到的線程完整的答案,除了我的問題是不同的更關於創建html表格。 –

+0

那裏的信息應該會幫助你進一步瞭解。它沒有解釋如何將信息整合到表格中,但它具有關於如何從文件中讀取信息的良好信息。 – SuperBiasedMan

回答

0

所以你的問題是

我想打一個表,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 
+0

感謝回覆@adrianus。你理解正確,但看起來仍然需要一些解決方法。我會嘗試一下,讓你知道輸出。我也會嘗試做一些改變並提出一些建議。再次感謝。 –

+0

@AuuragTiwary如果還存在問題,歡迎來到這裏。考慮選擇一個被接受的答案,如果它幫助你:-) – adrianus

相關問題