2017-03-01 52 views
0

我有一個程序,它從網頁中獲取URLS並將網頁保存爲一個文件夾中的.html文件到我的桌面上。現在我需要使用這些相同的.html文件,並將它們設置爲我的下一個程序的輸入。我的問題是,如何獲得所有這些大約400+的文件作爲輸入到將執行剩餘工作的功能的輸入?我目前也在使用python 2.7,但如果我需要使用它,我可以使用最新的python。Python:使用許多文件作爲輸入

+0

'進口OS yourpath = '// //到文件路徑'; os.listdir()'? – 9000

+0

使用'glob.glob(「/ path/to/*。html」)'列出所有文件 – haifzhan

回答

0

你的第二個功能可以採取的文件名列表,像這樣:

def process(files): 
    for f in files: 
     # do stuff 

而且你可以通過做

import os 
files = os.listdir('/path/to/files') 
+0

如果我的文件是html,我還可以使用嗎?我將不得不打開並閱讀它們,所以我仍然需要一個urlopen(文件)? –

+0

Python不會在乎你的文件的內容是什麼。問題是這些html文件存儲在本地機器上嗎?如果是這樣,'urlopen'是不必要的,因爲你可以使用'open'來讀取它們。 – thaavik

+0

是的,我有文件存儲在一個文件夾,所以即時做文件=打開(路徑)現在我當前的問題是即時通訊只試圖得到parapraphs文本並標記它。即時通訊使用ntlk標記,但首先我只需要從段落標記正確的文本。我正在嘗試美麗的soup.find_all('p') –

0

獲得的文件列表,您可以使用glob.glob()返回所有文件路徑名匹配模式,然後遍歷所有文件並逐個處理它們

html_files = glob.glob("/path/to/*html") 

for html_file in html_files: 
    with open(html_file) as inputs: 
     for line in inputs: 
      # do your work on the line 
1

這應該解決售後服務您的問題

import os 
for root, dirs, files in os.walk(yourpath, topdown=False):#topdown traversing 
    for name in files: 
     print(os.path.join(root, name)) 
     stuff 
    for name in dirs: 
     print(os.path.join(root, name)) 
     stuff 
相關問題