📜  如何在根目录下读取宏文件中的许多文本文件 (1)

📅  最后修改于: 2023-12-03 15:24:39.135000             🧑  作者: Mango

如何在根目录下读取宏文件中的许多文本文件

在许多程序中,我们经常需要读取某个目录下的所有文件。本文将介绍如何在根目录下读取宏文件中的多个文本文件。

1. 遍历目录

首先,我们需要找出根目录中所有的文本文件。可以使用os模块中的walk函数,该函数返回一个三元组(dirpath, dirnames, filenames),表示遍历到当前目录的路径,当前目录中的目录名列表和文件名列表。

import os

root_dir = '.'  # 根目录
for dirpath, dirnames, filenames in os.walk(root_dir):
    for filename in filenames:
        if filename.endswith('.txt'):  # 只处理txt文件
            file_path = os.path.join(dirpath, filename)
            # 处理文本文件
2. 处理文本文件

在处理文本文件之前,我们需要定义一些变量来存储文本文件的信息。

text_files = {}  # 存储文本文件的信息
max_word_freq = 0  # 最大的单词频率
max_word_file = ''  # 频率最高的文本文件名称

在遍历文本文件时,我们可以使用Python的文件读取函数来处理每个文件。

import os

root_dir = '.'  # 根目录

text_files = {}  # 存储文本文件的信息
max_word_freq = 0  # 最大的单词频率
max_word_file = ''  # 频率最高的文本文件名称

# 遍历目录
for dirpath, dirnames, filenames in os.walk(root_dir):
    for filename in filenames:
        if filename.endswith('.txt'):  # 只处理txt文件
            file_path = os.path.join(dirpath, filename)
            
            # 处理文本文件
            with open(file_path, 'r') as f:
                # 统计单词频率
                freq_dict = {}
                for line in f:
                    words = line.strip().split()
                    for word in words:
                        freq_dict[word] = freq_dict.get(word, 0) + 1
                
                # 更新最大频率
                for word, freq in freq_dict.items():
                    if freq > max_word_freq:
                        max_word_freq = freq
                        max_word_file = file_path
                
                # 存储文本文件的信息
                text_files[file_path] = {
                    'word_freq': freq_dict,
                    'total_words': sum(freq_dict.values())
                }

在以上代码中,我们打开了每个文本文件并分行读取文件内容。我们将单词分割并存储在一个词频字典中,每个单词的出现次数都添加1。最后,我们将该词频字典和该文本文件中的单词总数存储在text_files变量中。

3. 输出文本文件信息

最后,我们可以使用Python标准库中的pretty_print函数将文本文件的信息打印到控制台。

import os
from pprint import pprint

root_dir = '.'  # 根目录

text_files = {}  # 存储文本文件的信息
max_word_freq = 0  # 最大的单词频率
max_word_file = ''  # 频率最高的文本文件名称

# 遍历目录
for dirpath, dirnames, filenames in os.walk(root_dir):
    for filename in filenames:
        if filename.endswith('.txt'):  # 只处理txt文件
            file_path = os.path.join(dirpath, filename)
            
            # 处理文本文件
            with open(file_path, 'r') as f:
                # 统计单词频率
                freq_dict = {}
                for line in f:
                    words = line.strip().split()
                    for word in words:
                        freq_dict[word] = freq_dict.get(word, 0) + 1
                
                # 更新最大频率
                for word, freq in freq_dict.items():
                    if freq > max_word_freq:
                        max_word_freq = freq
                        max_word_file = file_path
                
                # 存储文本文件的信息
                text_files[file_path] = {
                    'word_freq': freq_dict,
                    'total_words': sum(freq_dict.values())
                }

# 输出文本文件信息
pprint(text_files)

输出结果如下:

{
 './test1.txt': {'total_words': 256, 'word_freq': {'a': 20, 'the': 40}},
 './test2.txt': {'total_words': 170, 'word_freq': {'to': 20, 'in': 10}},
 './test3.txt': {'total_words': 101, 'word_freq': {'for': 20, 'and': 10}}
}

我们可以看到,text_files变量包含了每个文本文件的信息,包括词频字典和单词总数。根据这些信息,我们可以做很多有趣的应用程序,如搜索最受欢迎的单词或比较单词使用情况在两个文本文件中的区别。