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 相关文章推荐
MySQL适配器PyMySQL详解
Sep 20 Python
使用Python操作excel文件的实例代码
Oct 15 Python
实例讲解Python爬取网页数据
Jul 08 Python
python实现括号匹配的思路详解
Aug 23 Python
Python实现随机创建电话号码的方法示例
Dec 07 Python
python实现得到当前登录用户信息的方法
Jun 21 Python
python实现桌面托盘气泡提示
Jul 29 Python
python如何求数组连续最大和的示例代码
Feb 04 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
Mar 24 Python
在python中利用pycharm自定义代码块教程(三步搞定)
Apr 15 Python
python时间time模块处理大全
Oct 25 Python
python爬虫泛滥的解决方法详解
Nov 25 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使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
php建立Ftp连接的方法
2015/03/07 PHP
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
Python如何快速实现分布式任务
2017/07/06 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
python操作kafka实践的示例代码
2019/06/19 Python
初学者学习Python好还是Java好
2020/05/26 Python
Python 代码调试技巧示例代码
2020/08/11 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
什么时候用assert
2015/05/08 面试题
汽车维修工岗位职责
2014/02/12 职场文书
学生个人自我鉴定
2014/03/26 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫
mysql数据库隔离级别详解
2022/06/16 MySQL