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 判断是否为质数或素数的实例
Oct 30 Python
基于Python实现的微信好友数据分析
Feb 26 Python
python3.x实现发送邮件功能
May 22 Python
浅谈python下tiff图像的读取和保存方法
Dec 04 Python
python实现给微信指定好友定时发送消息
Apr 29 Python
Python安装Flask环境及简单应用示例
May 03 Python
PyTorch的深度学习入门之PyTorch安装和配置
Jun 27 Python
Flask框架单例模式实现方法详解
Jul 31 Python
.dcm格式文件软件读取及python处理详解
Jan 16 Python
Python with标签使用方法解析
Jan 17 Python
Python实现AI自动抠图实例解析
Mar 05 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 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
我的论坛源代码(六)
2006/10/09 PHP
推荐一款MAC OS X 下php集成开发环境mamp
2014/11/08 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
PHP生成树的方法
2015/07/28 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
JS查看对象功能代码
2008/04/25 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
JS实现页面侧边栏效果探究
2021/01/08 Javascript
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
Python实现简单的可逆加密程序实例
2015/03/05 Python
python中使用mysql数据库详细介绍
2015/03/27 Python
python Django批量导入不重复数据
2016/03/25 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
Python中Selenium模块的使用详解
2020/10/09 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
公司营业员的工作总结自我评价
2013/10/05 职场文书
库房管理员岗位职责
2014/03/09 职场文书
百日安全生产活动总结
2014/07/05 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
单位证明范文
2015/06/18 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
实现一个简单得数据响应系统
2021/11/11 Javascript
Redis高并发缓存架构性能优化
2022/05/15 Redis