seek引发的python文件读写的问题及解决


Posted in Python onJuly 26, 2019

我的需求很简单,就是统计一下我的安装脚本执行的次数和时间,格式是这样的

install_times:1|install_times:2018-09-03 15:58:46
install_times:2|install_times:2018-09-03 15:58:50
install_times:3|install_times:2018-09-03 15:58:54

首先我需要判断一下文件是否为空,我开始是这样写的

import time
import os
file_list = []
tags = False
with open("install_hadoop.txt", "r", encoding="utf-8") as f:
  flag = bool(f.readline())
  # obj = True
  # f.seek(0)
  if flag:
    tags = True
    for obj in f:
      tmp_list = obj.split("|")
      file_list.append(tmp_list)
    last_times = int(file_list[-1][0].split(":")[1]) + 1
    last_time = time.strftime("%Y-%m-%d %H:%M:%S")
  else:
    last_times = 1
    last_time = time.strftime("%Y-%m-%d %H:%M:%S")

先通过f.readline()读一行文件出来,判断返回的对象是否为真,如果为真,则认为文件不为空,则继续往下走,这里有个问题就是,当我读出来一行后,我的指针的位置到了第一行的末尾,等下在去读文件,直接从第二行去读数据,本来我这里是要读到所有的数据,但是由于seek导致我的数据是从第二行开始的,所以得出来的结果就不对

这里可以有2种办法解决

1、通过f.readline()读一次文件之后,在f.seek(0),把指针在设置回到最开始的位置

with open("install_hadoop.txt", "r", encoding="utf-8") as f:
  flag = bool(f.readline())
  # obj = True
  <strong> f.seek(0)</strong>
  if flag:
    tags = True
    for obj in f:
      tmp_list = obj.split("|")
      file_list.append(tmp_list)
    last_times = int(file_list[-1][0].split(":")[1]) + 1
    last_time = time.strftime("%Y-%m-%d %H:%M:%S")
  else:
    last_times = 1
    last_time = time.strftime("%Y-%m-%d %H:%M:%S")

2、修改判断文件是否为空的方法,采用os.path.getsize的方法来判断文件是否为空

with open("install_hadoop.txt", "r", encoding="utf-8") as f:<br>  flag = bool(f.readline())<br>  # obj = True<br>  f.seek(0)<br>  <strong>print(os.path.getsize("install_hadoop.txt"))</strong><br>  if flag:<br>    tags = True<br>    for obj in f:<br>      tmp_list = obj.split("|")<br>      file_list.append(tmp_list)<br>    last_times = int(file_list[-1][0].split(":")[1]) + 1<br>    last_time = time.strftime("%Y-%m-%d %H:%M:%S")<br>  else:<br>    last_times = 1<br>    last_time = time.strftime("%Y-%m-%d %H:%M:%S")

至此,这个问题被解决,同时也对python的文件操作有了更深的理解,也明白了python设置seek的作用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python制作CSDN免积分下载器
Mar 10 Python
python实现读取命令行参数的方法
May 22 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
python+pandas生成指定日期和重采样的方法
Apr 11 Python
使用pandas的DataFrame的plot方法绘制图像的实例
May 24 Python
Python绘制并保存指定大小图像的方法
Jan 10 Python
举例讲解Python常用模块
Mar 08 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
Apr 28 Python
python中使用input()函数获取用户输入值方式
May 03 Python
Python中的np.argmin()和np.argmax()函数用法
Jun 02 Python
详细介绍python操作RabbitMq
Apr 12 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 Python
python经典趣味24点游戏程序设计
Jul 26 #Python
对django后台admin下拉框进行过滤的实例
Jul 26 #Python
python函数的万能参数传参详解
Jul 26 #Python
Python企业编码生成系统之主程序模块设计详解
Jul 26 #Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 #Python
django admin.py 外键,反向查询的实例
Jul 26 #Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 #Python
You might like
yii框架源码分析之创建controller代码
2011/06/28 PHP
PHP+jQuery实现自动补全功能源码
2013/05/15 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
关于vue项目中搜索节流的实现代码
2019/09/17 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
python实现拼图小游戏
2020/02/22 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
红领巾广播站广播稿
2014/02/01 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
统计专业自荐书
2014/07/06 职场文书
工作目标责任书
2014/07/23 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
高中军训感想
2015/08/07 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers