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使用rabbitmq实现网络爬虫示例
Feb 20 Python
Python中itertools模块用法详解
Sep 25 Python
Python实现计算两个时间之间相差天数的方法
May 10 Python
Python编程之变量赋值操作实例分析
Jul 24 Python
解决python升级引起的pip执行错误的问题
Jun 12 Python
Python3 导入上级目录中的模块实例
Feb 16 Python
Python子类继承父类构造函数详解
Feb 19 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
Jun 18 Python
TensorBoard 计算图的查看方式
Feb 15 Python
python实点云分割k-means(sklearn)详解
May 28 Python
基于python实现matlab filter函数过程详解
Jun 08 Python
编写python代码实现简单抽奖器
Oct 20 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侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
linux比较文件内容的命令是什么
2013/03/04 面试题
市场部管理制度
2014/02/02 职场文书
《纸船和风筝》教学反思
2014/02/15 职场文书
创建无烟单位实施方案
2014/03/29 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
求职自荐信的格式
2014/04/07 职场文书
淘宝店策划方案
2014/06/07 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
慰问信范文
2015/02/14 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript