python读取txt文件内容并进行分析

2023-05-16

今天和大家分享一下python如何读取txt文件内容并进行数据分析的

需求:某txt文件中存在很多数据,这些数据的某一个属性主要分为A、B、C、D四类,要求把数据分成四类求某一数值属性的平均值,并统计生成超过平均值两倍或者三倍的数据。打包成exe应用程序。

目录

一、实现思路

二、代码展示

三、总结

一、实现思路

1、读取文件,获取文件的每一行数据

2、分析文件数据,返回其独特的分割方法(这里我的txt文件是以制表符分割)

3、因为readlines读出来之后是列表形式,所以我们可以利用索引取我们想要的数据

4、根据需求设定判断条件

5、满足条件的数据重新写入某一个。txt文件里面

6、要平均值我们就加平均值

7、要打印我们就加打印

8、还要统计报表我们就根据需求再创建.txt文件进行追加

9、加入我们的input,try except进行优化

10、pyinstaller打包

11、成功

二、代码展示

"""
调度统计
是需要把算法文件中的PassiveReplan  ActiveReplan DeadLockReplan SolDeadLock 数据分为4类,
再分别将这4类的perTskNum求平均值,再生成超过平均值x倍的数据,合成一个统计报表,最后剔除查过平均值x倍的数据求平均值。
"""
import time
import os

PassiveReplan = 0
PassiveReplan_all = 0
ActiveReplan = 0
ActiveReplan_all = 0
DeadLockReplan = 0
DeadLockReplan_all = 0
SolDeadLock = 0
SolDeadLock_all = 0

filename = input("请上传文件:")
time_now = time.strftime("%Y-%m-%d-%H-%M-%S")
print("\n\n")
# 判断是否存在Scheduling_document文件夹没有的话新增
if os.path.exists("./Scheduling_document"):
    pass
else:
# 创建文件夹
    os.mkdir("./Scheduling_document")


# 读取文件
try:
    with open(filename,"r") as f:
        data = f.readlines()
        for words in data:
            word = words.split("\t")
            if word[1] == "PassiveReplan":
                with open(f"./Scheduling_document/{time_now}-PassiveReplan.txt", "a", encoding="utf-8") as f:
                    f.write(str(word))
                    f.write("\n")
                    PassiveReplan_all += eval(word[4])
                    PassiveReplan += 1
                    PassiveReplan_agv = PassiveReplan_all / PassiveReplan
            if word[1] == "ActiveReplan":
                with open(f"./Scheduling_document/{time_now}-ActiveReplan.txt","a",encoding="utf-8") as f:
                    f.write(str(word))
                    f.write("\n")
                    ActiveReplan_all += eval(word[4])
                    ActiveReplan += 1
                    ActiveReplan_agv = ActiveReplan_all / ActiveReplan
            if word[1] == "DeadLockReplan":
                with open(f"./Scheduling_document/{time_now}-DeadLockReplan.txt", "a", encoding="utf-8") as f:
                    f.write(str(word))
                    f.write("\n")
                    DeadLockReplan_all += eval(word[4])
                    DeadLockReplan += 1
                    DeadLockReplan_agv = DeadLockReplan_all / DeadLockReplan
            if word[1] == "SolDeadLock":
                with open(f"./Scheduling_document/{time_now}-SolDeadLock.txt", "a", encoding="utf-8") as f:
                    f.write(str(word))
                    f.write("\n")
                    SolDeadLock_all += eval(word[4])
                    SolDeadLock += 1
                    SolDeadLock_agv = SolDeadLock_all / SolDeadLock
except Exception as e:
    print("没有这个文件",e)


# 追加内容
    try:
        with open(f"./Scheduling_document/{time_now}-PassiveReplan.txt", "a", encoding="utf-8") as f:
            f.write("PassiveReplans类的平均值为:")
            f.write(str(PassiveReplan_agv))
            f.write(f"\n'生成报告时间{time_now}'")
        with open(f"./Scheduling_document/{time_now}-ActiveReplan.txt", "a", encoding="utf-8") as f:
            f.write("ActiveReplan类的平均值为:")
            f.write(str(ActiveReplan_agv))
            f.write(f"\n'生成报告时间{time_now}'")
        with open(f"./Scheduling_document/{time_now}-DeadLockReplan.txt", "a", encoding="utf-8") as f:
            f.write("DeadLockReplan类的平均值为:")
            f.write(str(DeadLockReplan_agv))
            f.write(f"\n'生成报告时间{time_now}'")
        with open(f"./Scheduling_document/{time_now}-SolDeadLock.txt", "a", encoding="utf-8") as f:
            f.write("SolDeadLock类的平均值为:")
            f.write(str(SolDeadLock_agv))
            f.write(f"\n'生成报告时间{time_now}'")
    except Exception as e:
        print(f"{filename}中没有PassiveReplan/ActiveReplan/DeadLockReplan/SolDeadLock分类",e)



try:
    print(f"PassiveReplan类的平均值为:{PassiveReplan_agv},报告时间:{time_now}")
    print(f"ActiveReplan类的平均值为:{ActiveReplan_agv},报告时间{time_now}")
    print(f"DeadLockReplan类的平均值为:{DeadLockReplan_agv},报告时间{time_now}")
    print(f"SolDeadLock类的平均值为:{SolDeadLock_agv},报告时间{time_now}")
except Exception as e:
    print("无法找到xxx_agv平均值",e)

print("\n\n")

print("---------生成指定报告----------\n"
      "说明:参考标准,各分类平均值,需确定倍数multiple\n"
      "效果:将生成大于multiple倍的数据\n"
      "报告位置:dict目录下的Scheduling_document")

print("\n")
multiple = input("请输入倍数:")
with open(filename, "r") as f:
    data = f.readlines()
    for words in data:
        word = words.split("\t")
        if word[1] == "PassiveReplan":
            with open(f"./Scheduling_document/{multiple}倍-PassiveReplan.txt", "a", encoding="utf-8") as f:
                if float(word[4]) > PassiveReplan_agv * eval(multiple):
                    f.write(str(word))
                    f.write("\n")
        if word[1] == "ActiveReplan":
            with open(f"./Scheduling_document/{multiple}倍-ActiveReplan.txt", "a", encoding="utf-8") as f:
                if float(word[4]) > ActiveReplan_agv * eval(multiple):
                    f.write(str(word))
                    f.write("\n")
        if word[1] == "DeadLockReplan":
            with open(f"./Scheduling_document/{multiple}倍-DeadLockReplan.txt", "a", encoding="utf-8") as f:
                if float(word[4]) > DeadLockReplan_agv * eval(multiple):
                    f.write(str(word))
                    f.write("\n")
        if word[1] == "SolDeadLock":
            with open(f"./Scheduling_document/{multiple}倍-SolDeadLock.txt", "a", encoding="utf-8") as f:
                if float(word[4]) > SolDeadLock_agv * eval(multiple):
                    f.write(str(word))
                    f.write("\n")

print("请前往dist目录下的Scheduling_document查看")
exite = input("按任意键退出:")

三、总结

此代码最为练手使用,其中运用了文件读写,数据类型的转换、数据索引等知识点。最后为了方便使用打包成.exe应用程序 打包命令:

pyinstall -F XXX.py

感谢大家支持!!! 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python读取txt文件内容并进行分析 的相关文章

  • 用于将 cython 中的许多 C++ 类包装到单个共享对象的项目结构

    我在文档 邮件列表和这个问题在这里 https stackoverflow com questions 10300660 cython and distutils 但我想得到一个更直接的答案来解决我的具体情况 我正在通过尝试一点一点地包装我
  • 如何查看Databricks中的所有数据库和表

    我想列出 Azure Databricks 中每个数据库中的所有表 所以我希望输出看起来像这样 Database Table name Database1 Table 1 Database1 Table 2 Database1 Table
  • Python:在列表理解本身中引用列表理解?

    这个想法刚刚出现在我的脑海中 假设您出于某种原因想要通过 Python 中的列表理解来获取列表的唯一元素 i if i in created comprehension else 0 for i in 1 2 1 2 3 1 2 0 0 3
  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我

随机推荐