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使用urllib模块和pyquery实现阿里巴巴排名查询
Jan 16 Python
在Django框架中设置语言偏好的教程
Jul 27 Python
详解Python nose单元测试框架的安装与使用
Dec 20 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
浅谈python 读excel数值为浮点型的问题
Dec 25 Python
python django生成迁移文件的实例
Aug 31 Python
pycharm显示远程图片的实现
Nov 04 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
浅谈在django中使用redirect重定向数据传输的问题
Mar 13 Python
python在一个范围内取随机数的简单实例
Aug 16 Python
python在地图上画比例的实例详解
Nov 13 Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 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+APACHE实现用户论证的方法
2006/10/09 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
解析isset与is_null的区别
2013/08/09 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
2014/04/29 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
PHP实现的策略模式示例
2019/03/20 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
通过javascript设置css属性的代码
2009/12/28 Javascript
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
JavaScript实现弹出子窗口并传值给父窗口
2014/12/18 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
Node.js简单入门前传
2017/08/21 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
[01:10]DOTA2次级职业联赛 - U5战队宣传片
2014/12/01 DOTA
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
python中日期和时间格式化输出的方法小结
2015/03/19 Python
Python自动扫雷实现方法
2015/07/25 Python
Python类的动态修改的实例方法
2017/03/24 Python
利用python求积分的实例
2019/07/03 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
python属于解释型语言么
2020/06/15 Python
python中的列表和元组区别分析
2020/12/30 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
Nisbets爱尔兰:英国最大的厨房和餐饮设备供应商
2019/01/26 全球购物
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
如何写一个自定义标签
2012/12/28 面试题
党员年终民主评议的自我评价
2013/11/05 职场文书
药学职务聘任书
2014/03/29 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript