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文件夹与文件的相关操作(推荐)
Jul 25 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
Apr 05 Python
Python批处理更改文件名os.rename的方法
Oct 26 Python
PyCharm代码提示忽略大小写设置方法
Oct 28 Python
python 图像平移和旋转的实例
Jan 10 Python
Django基础知识 web框架的本质详解
Jul 18 Python
Python基本类型的连接组合和互相转换方式(13种)
Dec 16 Python
基于Python实现下载网易音乐代码实例
Aug 10 Python
python 监控logcat关键字功能
Sep 04 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 Python
教你用python控制安卓手机
May 13 Python
python代码实现备忘录案例讲解
Jul 26 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
PHP+DBM的同学录程序(5)
2006/10/09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
2006/12/06 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
2013/04/12 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
JavaScript操作XML/HTML比较常用的对象属性集锦
2015/10/30 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
js实现界面向原生界面发消息并跳转功能
2016/11/22 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
微信小程序遍历Echarts图表实现多个饼图
2019/04/25 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
详解Python中dict与set的使用
2015/08/10 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
2018/02/03 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
高中的职业生涯规划书
2013/12/28 职场文书
家长会学生家长演讲稿
2013/12/29 职场文书
完美的中文自荐信
2014/05/24 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
志愿者工作心得体会
2016/01/15 职场文书
2019年自助餐厅创业计划书模板
2019/08/22 职场文书
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL