有没有一种方法可以创建将所有数据文件加载到目录中然后输出其文件名和内容的函数?-Python 3

时间:2019-04-17 17:09:54

标签: python python-3.x ipython glob

是否有一种方法可以创建将所有数据文件加载到目录中然后输出其文件名和内容的功能?

输入:获取我给定目录(wow.txt,testting.txt等)中的所有文件

过程:我想通过一个函数运行所有文件

输出:我希望输出为已处理文件的总数以及其下的所有文件名及其各自的内容。

例如:

Total Number of Documents: 6

/home/file/wow.txt

"all of its content"

/home/file/www.txt

"all of its content"

这是我的代码:

#Import Functions  
import glob
# get all the .txt files
files=glob.glob("*.txt")  

#Load Data Function
def load_data(files):
    """
    Input  : path to all .txt files
    Purpose: loading all text file
    Output : list of documents along with their respective content 

    """

    documents_list=[]
    content=[]

    for file in files:
        with open(file,"rt",encoding="latin-1") as fin:
            print(file)
            for line in fin.readlines():
                text = line.strip()
                documents_list.append(text)
        print("Total Number of Documents:",len(documents_list))
        content.append( text[0:min(len(text),100)])
    return documents_list,content

#Output
load_data(files)

这是我的输出:

enter image description here

enter image description here

  1. 正如您在输出的第一部分中看到的那样,它显示了每个文件和随机数。相反,它应该只包含文档总数​​(5)

  2. 它显示所有文件的内容,但不按文件分开。如红线所示,它表示第一个文件的结尾,红线下方是另一个文件的开头。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

def print_files_in_directory(directory):
    files = [f for f in os.listdir(directory) if os.path.isfile(f)]
    print(f'Total Number of Documents: {len(files)}')
    for f in files:
        file_path = os.path.join(directory, f)
        print(file_path)
        print('\n')
        with open(file_path, 'r') as fp:
            print(fp.read())

如果希望它在子目录中包含文件,则必须自己手动递归这些子目录,或使用os.walk()