帮我写一段python代码,统计文件夹中每个文件中不同字符串出现的次数并统计成表格
时间: 2024-04-29 11:24:28 浏览: 7
以下是一段实现该功能的Python代码:
```python
import os
def count_strings(folder_path):
# 统计不同字符串出现的次数
file_counts = {}
for file_name in os.listdir(folder_path):
file_path = os.path.join(folder_path, file_name)
with open(file_path) as f:
for line in f:
for word in line.strip().split():
if word in file_counts:
file_counts[word][file_name] += 1
else:
file_counts[word] = {file_name: 1}
return file_counts
def print_table(file_counts):
# 打印统计表格
max_file_name_len = max(len(file_name) for file_name in file_counts.values())
max_word_len = max(len(word) for word in file_counts.keys())
print(f'{"Word":<{max_word_len}} | {"Total":<{max_file_name_len}} | ', end='')
for file_name in sorted(file_counts.values()):
print(f'{file_name:<{max_file_name_len}} | ', end='')
print()
print('-' * (max_word_len + max_file_name_len + 4))
for word, file_counts in sorted(file_counts.items()):
print(f'{word:<{max_word_len}} | {sum(file_counts.values()):<{max_file_name_len}} | ', end='')
for file_name in sorted(file_counts.keys()):
print(f'{file_counts[file_name]:<{max_file_name_len}} | ', end='')
print()
if __name__ == '__main__':
folder_path = 'folder_path_here' # 替换为实际的文件夹路径
file_counts = count_strings(folder_path)
print_table(file_counts)
```
该代码首先定义了一个 `count_strings` 函数,它使用 `os` 模块遍历文件夹中的每个文件,统计每个文件中不同字符串出现的次数,并将统计结果保存在一个字典中。该字典的键为字符串,值为另一个字典,其中键为文件名,值为该文件中该字符串出现的次数。
然后,代码定义了一个 `print_table` 函数,它打印统计结果的表格。该函数首先计算出表格中每一列的最大宽度,然后使用字符串格式化来打印表格。表格的第一行显示文件名,后面的行显示每个字符串在每个文件中出现的次数。
最后,在 `if __name__ == '__main__'` 中,代码调用 `count_strings` 和 `print_table` 函数来统计并打印文件夹中每个文件中不同字符串出现的次数的表格。需要将 `folder_path_here` 替换为实际的文件夹路径。