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实现发送email的几种常用方法
Aug 18 Python
python实现忽略大小写对字符串列表排序的方法
Sep 25 Python
Python中import机制详解
Nov 14 Python
Python3 伪装浏览器的方法示例
Nov 23 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
python 批量添加的button 使用同一点击事件的方法
Jul 17 Python
详解Python3中的 input() 函数
Mar 18 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
Django filter动态过滤与排序实现过程解析
Nov 26 Python
解决Django transaction进行事务管理踩过的坑
Apr 24 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 命令行参数详解及应用
2011/05/18 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
JS回调函数深入理解
2019/10/16 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
JS实现点击掉落特效
2021/01/29 Javascript
Python中optparse模块使用浅析
2015/01/01 Python
使用Python实现一个简单的项目监控
2015/03/31 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
Tensorflow 多线程设置方式
2020/02/06 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
Python 字符串池化的前提
2020/07/03 Python
如何使用Python调整图像大小
2020/09/26 Python
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
质量安全标语
2014/06/07 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书
应聘教师自荐信
2015/03/26 职场文书
科技馆观后感
2015/06/08 职场文书
技术入股协议书
2016/03/22 职场文书
vue使用watch监听属性变化
2022/04/30 Vue.js