在文件夹中读取同一个文件的文件

问题描述:

我需要一点帮助来完成我的程序。 我在一个文件夹中有20个相同类型的文件,字符串与相应的值。 有没有办法创建一个可以这种方式打开所有文件的函数
file1 = [line.strip() for line in open("/Python34/elez/file1.txt", "r")]在文件夹中读取同一个文件的文件

我希望我解释得很好。 谢谢!

+0

你为什么想共同打开20个文件? – 2014-12-18 23:59:56

+0

我需要阅读每个文件,并在新文件中写一个摘要 – Gulliver 2014-12-19 00:49:56

from os import listdir 
from os.path import join, isfile 

def contents(filepath): 
    with open(filepath) as f: 
     return f.read() 

directory = '/Python34/elez' 

all_file_contents = [contents(join(directory, filename)) 
        for filename in listdir(directory) 
        if isfile(join(directory, filename)] 
+0

哇这是一个很酷的方式! – biobirdman 2014-12-18 23:59:03

+0

我认为itertools.chain或生成器会更好 – 2014-12-19 00:09:40

+0

我总是得到这个错误 'PermissionError:[Errno 13] Permission denied:'/ Python34/elez'' – Gulliver 2014-12-19 00:33:53

喜格列佛,这是我怎么会做它:

import os 

all_files = [] ## create a list to keep all the lines for all files 


for file in os.listdir('./'): ## use list dir to list all files in the dir 
    with open(file, 'r') as f: ## use with to open file 
     fields = [line.strip() for line in f] ## list comprehension to finish reading the field 
     all_fields.extend(fields) ## store in big list 

更多有关使用with语句来打开和读取文件,请参考此答案Correct way to write to files?