truncate file python

解决raise OSError(“Truncated File Read“)OSError: Truncated File Read 项目场景: python numpy 数据集读取 问题描述: 完整报错: Traceback (most recent call last): File "test_data.py", line 28, in <module> dataA1 = load_images(path + 'trainB/') File "test_data.py", line 16, in load_images pixels = load_img(path + filename.. 阅读详情

今天写代码读写文件发现文件内容出现'\x00\x00\x00123',前面多了很多0。最后发现原来是自己truncate的姿势不对

先来看看truncate函数用法吧:truncate([size]),将文件截断为size大小,如果没给size,那么就截断到当前指针位置。如果size小于文件大小,那么size前的文件内容保留,size字节后的内容被删除,如果size大于文件的大小,那么多余的字节就以空字节(\0)补充,truncate是不会改变文件的指针。试验如下:

size=0的时候:

>>> f = open("/tmp/bbb","r+")
>>> f.read()
'abcdefg'<span style="font-family: Arial, Helvetica, sans-serif;">#此时文件内容为abcdefg</span>
>>> f.close()
>>> f = open("/tmp/bbb","r+")
>>> f.truncate(0)#截断为0,清除所有内容
>>> f.read()#此时文件内容为空
''
>>> f.close()

size不为0,但小于filesize的时候:

>>> f = open("/tmp/bbb","r+")
>>> f.read()
'abcdefg'#此时文件内容为abcdefg
>>> f.close()
>>> f = open("/tmp/bbb","r+")
>>> f.truncate(3)#将文件截断为3字节
>>> f.tell()#当前文件指针为0
0
>>> f.read()
'abc'#前三个字节内容abc保留,后面的内容被清除
>>> f.close()
>>> f = open("/tmp/bbb","r+")#上面处理结束后文件内容为abc
>>> f.seek(1) #第一个字节(b)
>>> f.truncate(1)#只保留a,bc都被清除
>>> f.read()#此时指针在第一个字节,但a后面没内容了
''
>>> f.close()
>>> f = open("/tmp/bbb","r+")
>>> f.read()
'a'
当size大于文件大小的时候:

>>> f = open("/tmp/bbb","r+")
>>> f.read()
'abcdefg'
>>> f.read()
''
>>> f = open("/tmp/bbb","r+")
>>> f.truncate(20)
>>> f.read()
'abcdefg\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>> f.close()

可以看到,文件内容后面有一堆\x00
试验结束。

我的代码相关部分是为了读取文件内容,读取了再处理,处理完了再将结果写入文件,并覆盖以前的内容,代码相关流程简化如下:

with open(file,"r+") as f:
	data = f.read()
	#do something with data
	f.truncate(0)
	f.write(handled_data)
然后出现的问题就跟上面一样,因为read的时候已经将指针移到了末尾,此时truncate(0)了将文件内容清空了,但是文件指针还是在原来的位置,写的时候还是从那个位置开始,所以文件前面就会有一堆\x00

解决办法很简单:

with open(file,"r+") as f:
	data = f.read()
	#do something with data
f.seek(0)
	f.truncate(0)
	f.write(handled_data)

将文件指针放到最前面位置后,再写文件就是从开始位置写内容了


虽然这个问题比较简单,但是对我来说还是值得记录一下的,假如以后忘了还可以来看一下


本人出于个人兴趣,创建了一个个人公众号,每天筛选国外网友发现的有趣的事情推送到公众号,欢迎关注!



Python文件操作指南:truncate方法的用法 在Python中,我们经常需要对文件进行读取、写入和编辑操作。其中,truncate方法是一个非常有用的文件操作方法,它可以用来截断文件内容并将其长度调整为指定的大小。本文将详细介绍truncate方法的使用,并提供相应的源代码示例。 阅读详情

相关推荐

Synopsys AXI VIP 从环境搭建到首个验证场景运行

本文详细介绍了Synopsys AXI VIP从环境搭建到首个验证场景运行的全过程,包括VIP安装、示例工程生成、验证环境解析、仿真调试技巧及进阶优化。特别针对AXI协议验证中的常见问题提供了实用解决方案,帮助工程师快速掌握这一SoC验证必备工具。

weixin_29185493的博客 340

机器学习——从0开始构建自己的CNN分类网络

机器学习——从0开始构建自己的深度学习网络

qq_52222102的博客 5089

mongoDB 数据莫名其妙的没了

问题 之前没有接触过mongoDB,然后接手一个项目使用的是MongoDB,我就跟着网上的教程搭建一个MongoDB的服务,并运行起来。 一开始没有啥问题,成功的把服务与MongoDB都启动以来,运行也没有问题。但是过了几天,我再次打开时发现,以前的数据神奇的消失了。我还在想,是有什么定时清除的么,还是什么原因导致崩了然后数据就被清理了。 查找原因 第一次遇到我没有在意,重启了一下MongoDB,...

技术熊的博客小窝 1万+

OSError: image file is truncated (1 bytes not processed)解决方案

今天用paddle的框架做训练时遇到的一个问题: W0914 13:56:32.486941 21077 device_context.cc:404] Please NOTE: device: 3, GPU Compute Capability: 7.5, Driver API Version: 10.2, Runtime API Version: 10.1 W0914 13:56:32.492003 21077 device_context.cc:422] device: 3, cuDNN Version

qq_39474168的博客 2012

线性分类器(Linear Classifier)

线性分类器 如上图所示,这是二维空间中的一个数据集,如果他正好能够被一条直线分成两类,那么我们称它为线性可分数据集,这条直线就是一个线性分类器。 在三维空间中,如果数据集线性可分,是指能够被一个平面分为两类。 在一维空间中,所有的点都在一条直线上,如果线性可分。可以理解为它们能够被一个点分开。 这里的直线、平面、点被分为决策边界。 一个 m 维空间中的数据集,如果能够被一个超平面一分为二,那么这个数据集就是线性可分的,这个超平面就是决策边界。 例如,这是二维平面上的一条直线, 它可以把平面切分成两

xuechanba的博客 1万+

从网格划分到端口接地:一份给ADS新手的Momentum RF仿真避坑实操指南

本文为ADS新手提供Momentum RF仿真的实用指南,涵盖网格划分、端口接地、特殊结构处理等关键设置技巧。通过30-50 cells/λ原则、1/10波长限制等黄金法则,帮助用户平衡仿真精度与效率,避免常见错误,提升电磁仿真结果的准确性。

weixin_33692284的博客 505

python问题总结_Python 常见问题总结

1 错误:No module named '_tkinter'如果在使用类似 matplotlib 库时遇到如下错误:import tkinterFile "/usr/local/lib/python3.6/tkinter/__init__.py", line 36, in import _tkinter # If this fails your Python may not be configu...

weixin_39877166的博客 1425

【ComfyUI】QwenImageEdit OOTD角色与姿态匹配换装

本文介绍了一个基于Qwen Edit OOTD 2.0的ComfyUI工作流,能够实现角色与姿态匹配的智能穿搭生成。该工作流通过整合模型推理、姿态识别、图像拼接和渲染等节点,完成从角色图、姿态图到成品穿搭图的完整生成流程。核心采用Qwen Image系列模型进行图像理解和编辑,配合ControlNet进行姿态引导。用户只需提供角色图和姿态参考图,系统即可自动完成姿态解析、语义编码、采样生成等步骤,输出与输入姿态一致的穿搭图像。该方案适用于虚拟角色展示、电商试穿等场景,能保持角色特征一致的同时灵活变换姿态,显

Mr数据杨 1583

python中truncate的用法_Python File truncate() 方法

Python File truncate() 方法概述truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。语法truncate() 方法语法如下:fileObject.truncate( [ size ])参数size -- 可选,如果存在则文件截断为 siz...

weixin_39517859的博客 412

基于Simulink的电动汽车电池管理系统热管理优化仿真

电动汽车电池管理系统(Battery Management System, BMS)中的热管理是确保电池性能、安全性和寿命的关键环节。温度过高或过低都会显著影响电池的工作效率和寿命,因此需要对电池组进行精确的热管理。基于MATLAB/Simulink的仿真平台可以用于建模和优化电池热管理系统,包括热分布预测、冷却策略设计以及热平衡控制等。本项目旨在构建一个完整的电动汽车电池热管理优化仿真模型,并通过仿真验证系统的性能。

xiaoheshang_123的博客 461

PGM-Explainer实验总结

PGM-Explainer建立了一个概率图模型,为GNN提供实例级解释。 论文标题:PGM-Explainer: Probabilistic Graphical Model Explanations for Graph Neural Networks 论文地址:2010.05788.pdf (arxiv.org) PGM-Explainer实验 实验目的 研究PGM-Explainer的有效性 实验方案 合成数据集的节点分类 与其他解释器做对比实验 使用六个合成数据集。 每个输入图都是一个

笔记|思路|总结 1万+

truncate python是删除文件内容吗_Python3 File truncate() 方法

Python3 File truncate() 方法概述truncate() 方法用于从文件的首行首字节开始截断,截断文件为 size个字节,无 size 表示从当前位置截断;截断之后 V 后面的所有字节被删除,其中 Widnows 系统下的换行代表2个字节大小。 。语法truncate() 方法语法如下:fileObject.truncate( [ size ])参数size -- 可选,如果存...

weixin_39793576的博客 179

Vue3+Openlayers教程导航页【目录】

欢迎来到 Vue3+Openlayers 系列教程,这里是我在 优快云 编写的所有 Vue3+Openlayers 系列相关文章的索引页,适合初学者到进阶用户系统阅读。👀 更多教程正在持续更新中,欢迎关注我,一起探索 Openlayers 的强大魅力!

小彭的博客 1260

Python 文件(File) truncate() 方法

和其它编程语言一样,Python 也具有操作文件(I/O)的能力,比如打开文件、读取和追加数据、插入和删除数据、关闭文件、删除文件等。本文主要介绍Python 文件(File) truncate() 方法。 原文地址:Python 文件(File) truncate() 方法 ...

亮亮的专栏 805

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

python truncate_python3中的file.truncate是不是有本质改变?

一般网上的教程和博客都是基于py2.7,我是从3.5学起。一路上遇到的最大拦路虎是版本更迭带来的语法改变,我的时间都花在找出2.7-3.0的差异上了,真实可气啊。其中的file.truncate貌似变化最大?如果给入参,和2.7一样如预期。例如:woo.txt1oooooo2oooooo3oooooo4oooooof=open('woo.txt','r+')f.truncate(5)print(f...

weixin_39756235的博客 290

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python文件操作seek_python的文件操作file:(内置函数,如seek、truncate函数)

file打开文件有两种方式,函数用file()或者open()。打开后读入文件的内容用read()函数,其读入是从文件当前指针位置开始,所以需要控制指针位置用:一、先介绍下file读入的控制函数:seek(offset,where): where=0从起始位置移动,1从当前位置移动,2从结束位置移动。当有换行时,会被换行截断。seek()无返回值,故值为None。# 将文件打操作标记移到offse...

weixin_39922004的博客 372

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

python文件管理中的file、seek、truncate

一、先介绍下file、seek、truncate的基本用法:        seek(offset,where):  where=0从起始位置移动,1从当前位置移动,2从结束位置移动。当有换行时,会被换行截断。seek()无返回值,故值为None。        tell():  文件的当前位置,即tell是获得文件指针位置,受seek、readline、read、readlines影响,不受

grantlee1988的专栏 4440

truncate python是删除文件内容吗_Python File truncate() 方法

Python File truncate() 方法概述truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。语法truncate() 方法语法如下:fileObject.truncate( [ size ])参数size -- 可选,如果存在则文件截断为 siz...

weixin_39870700的博客 254

python 文件操作中的 file、seek、truncate 用法

一、先介绍下file、seek、truncate的基本用法:        seek(offset,where):  where=0从起始位置移动,1从当前位置移动,2从结束位置移动。当有换行时,会被换行截断。seek()无返回值,故值为None。        tell():  文件的当前位置,即tell是获得文件指针位置,受seek、readline、read、readlines影

李晓蒙的博客 8277

python的文件操作file:(内置函数,如seek、truncate函数)

file打开文件有两种方式,函数用file()或者open()。打开后读入文件的内容用read()函数,其读入是从文件当前指针位置开始,所以需要控制指针位置用: 一、先介绍下file读入的控制函数: seek(offset,where): where=0从起始位置移动,1从当前位置移动,2从结束位置移动。当有换行时,会被换行截断。seek()无返回值,故值为None。 # 将...

weixin_30825581的博客 426

truncate python是删除文件内容吗_Python File truncate() 方法是什么?能用在什么地方?...

今天这篇文章我们来了解一下python之中的truncate方法,在进入文章之前我们可能不知道truncate用法什么的,但是在这篇文章之中我们会运用truncate语句实例来让你们在今天的文章之中来对truncate方法进行了解。概述truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则从当前位置起截断;截断之后 s...

weixin_39886612的博客 196

Python file.truncate()方法

 http://www.yiibai.com/python/file_truncate.html

Tiancaizhaohaiwei的博客 1159
上一篇: python多线程join方法导致不能接收信号
下一篇: tornado和beego的helloworld性能对比
ECHOutopia
博客等级 码龄14年 11粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值