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 BeautifulSoup库抓取58手机维修信息
Nov 21 Python
Python多进程编程技术实例分析
Sep 16 Python
python使用多线程不断刷新网页的方法
Mar 31 Python
简单理解Python中的装饰器
Jul 31 Python
Python用UUID库生成唯一ID的方法示例
Dec 15 Python
python文件特定行插入和替换实例详解
Jul 12 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
Jan 10 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 Python
2020版Python学习路线图(附学习资料)
Sep 15 Python
Pytorch之扩充tensor的操作
Mar 04 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下使用SimpleXML 处理XML 文件
2010/02/27 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
jQuery操作 input type=checkbox的实现代码
2012/06/14 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
React styled-components设置组件属性的方法
2018/08/07 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
js实现简易拖拽的示例
2020/10/26 Javascript
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
法制演讲稿
2014/09/10 职场文书
青年文明号汇报材料
2014/12/23 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
电影圆明园观后感
2015/06/03 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL