seek引发的python文件读写的问题
我的需求很简单,就是统计一下我的安装脚本执行的次数和时间,格式是这样的
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
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")
2、修改判断文件是否为空的方法,采用os.path.getsize的方法来判断文件是否为空
with open("install_hadoop.txt", "r", encoding="utf-8") as f:
flag = bool(f.readline())
# obj = True
f.seek(0)
print(os.path.getsize("install_hadoop.txt"))
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")
至此,这个问题被解决,同时也对python的文件操作有了更深的理解,也明白了python设置seek的作用
seek引发的python文件读写的问题的更多相关文章
- python文件读写及形式转化和CGI的简单应用
一丶python文件读写学习笔记 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode) filename:包含了你要访问的文件名称的字符串值. mo ...
- python 文件读写操作(24)
以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...
- python 文件读写方式
一.普通文件读写方式 1.读取文件信息: with open('/path/to/file', 'r') as f: content = f.read() 2.写入文件中: with open('/U ...
- python文件读写小结
读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件 ...
- Python文件读写及网站显示
一.关于文件读写的笔记 (一) 文件概述 文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容 文件都是按照2进制进行存储的,但在表现形式上有2种:文本文件和二进制文件. 1. 文本文件 文本 ...
- Python 文件读写操作实例详解
Python提供了必要的函数和方法进行默认情况下的文件基本操作.你可以用file对象做大部分的文件操作 一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前 ...
- python文件读写详解
# Python3 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, ...
- Python 简明教程 --- 24,Python 文件读写
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 过去的代码都是未经测试的代码. 目录 无论是哪种编程语言,IO 操作都是非常重要的部分.I 即Inp ...
- Python文件读写--错误一
在学习python的文件读写操作的时候,我遇到了一点麻烦事,觉得可以记录下来,先上代码吧. with open('test.txt') as file: file.write('test') prin ...
随机推荐
- jsfl 读取xml
var fileURI = "file:///c|/temp/mydata.txt"; var dataXml = new XML(FLfile.read(fileURI)); v ...
- UI5-学习篇-8-本地SAP WEB IDE开发
1.本地SAP WEB IDE下载 UI5-学习篇-3-Local SAP WEB IDE下载 2.启动Orion服务 解压SAP WEB IDE文件后,双击Orion应用程序启动服务,如下图: 服务 ...
- UIPanGestureRecognizer translateInView, locationInView
假设在panGesture的回调事件里已经拿到了panGestureRecognizer CGPoint point = [panGestureRecognizer locationInView:se ...
- 使用pt-table-checksum及pt-table-sync校验复制一致性
一.简介 pt-table-checksum是percona-toolkit系列工具中的一个, 可以用来检测主. 从数据库中数据的一致性.其原理是在主库上运行, 对同步的表进行checksum, 记录 ...
- Todolist组件
一.什么是组件? 组件是可复用的 Vue 实例.是页面上的某一部分. 大型项目可以拆分成很多小组件. 二.如何定义(创建)组件? 全局组件:通过Vue.component方法创建的组件是全局组件.其中 ...
- 浅谈MySQL事务及隔离级别
目录 1.什么是事务 2.事务的ACID属性 2-1.原子性(Atomicity) 2-2.一致性(Consistency) 2-3.隔离性(Isolation) 2-4.持久性(Durability ...
- ArcGIS案例学习笔记-找出最近距离的垂线
ArcGIS案例学习笔记-找出最近距离的垂线 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:对于任意矢量要素类,查找最近距离并做图 数据: 方法: 0. 计算 ...
- tabel 选中行变色和取当前选中行值等问题
先把代码贴出来 $("#tableId tbody tr").mousedown(function () { $('#tableId tr').each(funct ...
- Html----表单元素
表单元素:用于客户端和服务端进行信息交互的通道 <form></form>:所有的表单元素都应该放在里面 文本输入框: <input type="text&qu ...
- 《深入理解JAVA虚拟机》----------第三章 垃圾收集器与内存分配策略,笔记(下)
1.垃圾收集器 1.1 Serial收集器 这个收集器是一个单线程的收集器,它在进行垃圾收集时,必须暂停其他所有的工作线程. 它是虚拟机运行在Client模式下的默认新生代收集器,它简单而高效. 1. ...