2017-04-14 89 views
0

我想從目錄中讀取所有文件,並將文件名和內容導入到列表中。我寫了下面的代碼,但它只導入目錄中的最後一個文件。從目錄打開文件,並保留文件名和內容

import os 

fileList = [] 

for dirname, dirnames, filenames in os.walk('.'): 
    for filename in filenames: 
     file = os.path.join(dirname, filename) 
    f = open(file, 'r') 
    contents = f.read() 
    newItem = (file, contents) 
    fileList.append(newItem) 


print(fileList) 
+0

在你想知道,你沒有得到這個有些簡單的問題遲早答案案:'蟒蛇-3.6 '標籤應該用於特定於Python 3.6版本的問題。由於這個問題不需要特定版本的python,因此可以添加'python'標籤。在使用'python'標記的問題之後,有很多人比python-3.6'多 – Felix

回答

0

似乎是縮進問題。試試這個:

import os 

fileList = [] 

for dirname, dirnames, filenames in os.walk('.'): 
    for filename in filenames: 
     file = os.path.join(dirname, filename) 
     f = open(file, 'r') 
     contents = f.read() 
     newItem = (file, contents) 
     fileList.append(newItem) 

print(fileList) 

此外,你不關閉你的程序中的文件是不好的風格。這是更好地運用到處理打開和關閉文件所謂的上下文管理器:

import os 

fileList = [] 

for dirname, dirnames, filenames in os.walk('.'): 
    for filename in filenames: 
     file = os.path.join(dirname, filename) 
     with open(file, 'r') as f: 
      contents = f.read() 
      newItem = (file, contents) 
      fileList.append(newItem) 

print(fileList) 
相關問題