2017-04-14 175 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)