seek引发的python文件读写的问题及解决
2019-07-26 14:22
585 查看
我的需求很简单,就是统计一下我的安装脚本执行的次数和时间,格式是这样的
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大批量读写.doc文件的问题
- 【转载】Python读写csv文件时中文乱码问题的解决办法
- 解决Python2.7读写文件中的中文乱码问题
- 多个地方同时向一个文件读写的互斥问题解决方案
- 一个properties文件读写组件类,解决java自带的properties文件处理薄弱问题
- matlab 各种文件的读取(及读写问题的解决)
- 解决多线程同时读写一个文件的问题
- [C#]解决读写包含汉字的txt文件时乱码的问题
- 解决python读取中文文件乱码问题
- Python27 和 IronPython 处理文件读写的字符编码问题
- 用python urllib2.urlopen(fileurl) 读取网络文件问题解决
- open()文件对象的seek、tell方法详解 分类: python基础学习 open()文件读写 python Module 2013-09-05 09:40 450人阅读 评论(0) 收藏
- [C#]解决读写包含汉字的txt文件时乱码的问题
- 简单解决Python文件中文编码问题
- python读文件读到windows休止符的问题及解决办法
- php使用fputcsv()函数csv文件读写数据的方法(解决中文乱码问题)
- 解决 Python ruamel.yaml 读写 yaml 文档 format 格式不一致问题
- 解决Python下载入文件路径不对的问题
- python3.2打开utf8的txt文件时BOM问题的解决办法
- 【python】中文的输出,打印,文件编码问题解决方法