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中expandtabs()方法的使用
May 18 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
python实现linux下使用xcopy的方法
Jun 28 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
Dec 14 Python
将pip源更换到国内镜像的详细步骤
Apr 07 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
Sep 25 Python
解决jupyter notebook 出现In[*]的问题
Apr 13 Python
使用Python防止SQL注入攻击的实现示例
May 21 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
Nov 28 Python
用 Python 元类的特性实现 ORM 框架
May 19 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,ajax实现分页
2008/03/27 PHP
认识并使用PHP超级全局变量
2010/01/26 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
2018/10/12 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
js的写法基础分析
2011/01/17 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
AngularJS快速入门
2015/04/02 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
javascript实现自动输出文本(打字特效)
2015/08/27 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
垃圾回收器的相关知识点总结
2018/05/13 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python中内建函数的简单用法说明
2016/05/05 Python
Python基于正则表达式实现文件内容替换的方法
2017/08/30 Python
python中copy()与deepcopy()的区别小结
2018/08/03 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
python的pstuil模块使用方法总结
2019/07/26 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
django中的数据库迁移的实现
2020/03/16 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
一年级语文教学反思
2014/02/13 职场文书
会计工作决心书
2014/03/11 职场文书
大学优秀班集体申报材料
2014/05/23 职场文书
学术会议通知范文
2015/04/15 职场文书