基于time模块和python的文件信息查看

我们想通过python代码实现一个文件的各项时间类信息的查看,那么代码实现过程如下:

# 导入时间模块
import time
# 导入操作系统模块
import os


# 将时间戳转化时间中文格式
def timestamptostring(timestamp):
    # 将时间戳转化为本地的时间戳
    vtime = time.localtime(timestamp)
    # 将时间戳格式化为中文时间格式
    vdatetime = time.strftime('%Y-%m-%d %H:%M:%S', vtime)
    return vdatetime


# 将字节数转化以M为单位的计量
def bytetoM(size):
    vsize = size / float(1024 * 1024)
    return round(vsize, 2)


# 主函数main
if __name__ == '__main__':
    # 获取当前.py文件的绝对路径
    current_file_path = os.path.abspath(__file__)
    # 获取当前.py文件所在的目录
    current_dir = os.path.dirname(current_file_path)
    # 构建新路径。这里将“2_test_count.txt”文件假定放在了和当前.py文件同一个目录下
    target_file_path = os.path.join(current_dir, "2_test_count.txt")
    # 通过os.stat()函数取得文件的信息
    fileinfo = os.stat(target_file_path)
    # print(type(fileinfo),fileinfo)
    print("2_test_count.txt:")
    print('文件建立时间:', timestamptostring(fileinfo.st_ctime))
    print('文件的大小:', bytetoM(fileinfo.st_size), 'M')
    print('文件修改时间:', timestamptostring(fileinfo.st_mtime))
    print('文件访问时间:', timestamptostring(fileinfo.st_atime))

以上代码可以实现该.py文件同目录中的一个txt文件信息的查看,如果想要查看其它文件,修改相应路径即可。代码运行结果展示:

2_test_count.txt:
文件建立时间: 2023-08-28 16:29:24
文件的大小: 0.0 M
文件修改时间: 2020-07-20 08:29:44
文件访问时间: 2024-03-30 12:16:08

python自动化查看文件信息及统计词频-LMLPHP

统计文件中的高频词

我们对一个txt的文件进行词频统计,并输出前六个出现次数最多的词。
代码如下:

# 导入正则模块库
import re


# 定义一个类
class counter_word:
    # 初始化
    def __init__(self, file_name):
        # 设置要统计单词的文件名
        self.filename = file_name
        # 初始一个字典,用来保存各单词出现的次数,形{'word1': 17, 'word2': 7...}
        self.dict_count = {}

    # 定义一个统计函数
    def count_word(self):
        # 以读的方式打开一文本文件
        with open(self.filename, 'r') as f:
            # 循环读文件每一行,防止文件过大
            for line in f:
                # 每次清空列表变量words,这个变量将文件中每行的单词依次加入进来
                words = []
                # 用列表生成式把每行的各个单词加入进来.
                # 查找字符串line中所有的"单词"。这里的"单词"被定义为由连续的字母、数字和下划线组成的序列。
                words = [s.lower() for s in re.findall("\w+", line)]
                # print(words)
                # 通过循环统计单词的个数
                for word in words:
                    # 采用累加法计算单词出现的个数
                    # self.dict_count[word]是以单词名名的字典键m ,
                    # self.dict_count.get(word, 0) + 1表示每发现一次将以该单词为键名的键值加1
                    self.dict_count[word] = self.dict_count.get(word, 0) + 1

    # 取出现次数前num名的单词
    def top_number(self, num):
        # 通过sorted()对字典进行排序,排序按键值大小排(key=lambda item: item[1])
        # 排序的方式是逆序reverse=True
        # 并对排好序的字典进行切片,取前num个
        return sorted(self.dict_count.items(), key=lambda item: item[1], reverse=True)[:num]


# 主程序main
if __name__ == '__main__':
    # 生成couter_word实例对象
    counter_obj = counter_word(".\\2_test_count.txt")
    # 调用函数进行统计
    counter_obj.count_word()
    # 取出现次数最多的前6个单词
    top_num_6 = counter_obj.top_number(6)
    print('test_count.txt', '中出现次数前6的单词统计如下:')
    # 通过循环打印出前出现次数最多的单词
    for word in top_num_6:
        print(word[0], '出现:', word[1], '次')

代码运行后的结果展示:

test_count.txt 中出现次数前6的单词统计如下:
you 出现: 33 次
to 出现: 19 次
the 出现: 10 次
who 出现: 10 次
those 出现: 9 次
have 出现: 8 次

re.findall(“\w+”, line)解析

在Python中,re.findall(pattern, string)函数是用来查找字符串中所有与正则表达式pattern匹配的所有子串,返回它们作为一个列表。如果pattern中没有组,findall将返回一个匹配项的列表,如果pattern中有组,它将返回一个包含所有匹配项的元组的列表。

正则表达式中的\w是一个特殊的字符类,匹配任何单词字符,等价于[a-zA-Z0-9_],其中包括所有的字母和数字以及下划线。+是一个量词,匹配它前面的字符一次或多次。

因此,re.findall(“\w+”, line)的含义是:查找字符串line中所有的"单词"。这里的"单词"被定义为由连续的字母、数字和下划线组成的序列。

例如:

import re

line = "The quick brown fox jumps over 12 lazy dogs."
words = re.findall("\w+", line)
print(words)

# 输出内容:
['The', 'quick', 'brown', 'fox', 'jumps', 'over', '12', 'lazy', 'dogs']

self.dict_count[word] = self.dict_count.get(word, 0) + 1解析

self.dict_count:这是一个字典),用于存储每个单词及其出现次数。字典的键是单词,值是对应的出现次数。

word:假设是一个字符串变量,表示要统计次数的单词。

.get(word, 0):这是dict类型的一个方法。它尝试获取字典中word键对应的值。如果word在字典中不存在,它会返回0。第二个参数(这里是0)是一个默认值,用于当键不存在于字典时返回。

self.dict_count.get(word, 0) + 1:首先使用.get()方法获取word的当前计数,然后将这个计数加1。如果word是新出现的,.get()将返回0,然后加1,意味着其开始计数为1。如果word已经在字典中,就获取其当前的计数值,然后加1来更新计数。

self.dict_count[word] = …:这是一个字典赋值操作。它会更新字典self.dict_count,将word的出现次数设置为新计算的值。

04-03 01:31