2016-12-23 59 views
-1

我需要從os.listdir的目錄中的文件列表中讀取文件的內容。我的工作小腳本如下:從os.listdir()中讀取文件的內容()(python)

import os 

path = "/Users/Desktop/test/" 
for filename in os.listdir(path): 
    with open(filename, 'rU') as f: 
     t = f.read() 
     t = t.split() 
     print(t) 

print(t)給我來自所有文件的內容一次出現在目錄(path)。

但我喜歡在第一個文件上打印內容,然後打印第二個內容等等,直到從dir中讀取所有文件。

請指導!謝謝。

+2

我並不真正瞭解「所有文件一次」和「第一個文件的內容,第二個的內容等等。它會打印第一個文件的內容,然後打印第二個文件的內容等等(儘管在不同的列表中)。請告訴我們你得到了什麼樣的產出,以及你期望得到什麼。 –

回答

0

您可以打印文件名。 在文件名後面打印內容。

import os 

path = "/home/vpraveen/uni_tmp/temp" 

for filename in os.listdir(path): 

    with open(filename, 'rU') as f: 
     t = f.read() 
     print filename + " Content : " 
     print(t) 
0

os.listdir僅返回文件的名稱。你需要os.path.join該名稱與文件住在路 - 否則蟒蛇會尋找他們在你當前的工作目錄(os.getcwd()),如果出現這種情況並非是一樣path蟒蛇會找不到文件:

import os 

path = "/Users/Desktop/test/" 

for filename in os.listdir(path): 
    print(filename) 
    file_path = os.path.join(path, filename) 
    print(file_path) 
    .. 

,如果你有pathlib在您的處置,你還可以:

from pathlib import Path 

path = "/Users/Desktop/test/" 

p = Path(path) 
for file in p.iterdir(): 
    if not file.is_file(): 
      continue 
    print(file) 
    print(file.read_text()) 
0

首先,你應該找到使用os.path.join(path, filename)每個文件的路徑。否則,如果更改變量path,則會循環錯誤的文件。其次,您的腳本已經提供了從第一個文件開始的所有文件的內容。我在腳本中添加了幾行以打印文件路徑和一個空行,以查看內容結束並開始的位置:

import os 

path = "/Users/Desktop/test/" 

for filename in os.listdir(path): 
    filepath = os.path.join(path, filename) 
    with open(filepath, 'rU') as f: 
     content = f.read() 
     print(filepath) 
     print(content) 
     print()