python(day021——文件1)

Python入门100题 | 第021题 前言: ???? 运行环境:python3 ???? 作者:K同学啊 ???? 选自专栏:《Python入门100题》 ???? 优秀专栏:《Matplotlib教程》 ???? 推荐专栏:《小白入门深度学习》 ???? 精选专栏:《深度学习100例》 题目: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 分析: 采取逆 阅读详情

1.文件操作:读、写、追加

  • 读:open(参数1:文件路径,参数2:打开模式,参数3:文件编码)

文件路径:

相对路径:在E盘下a.txt

绝对路径:e:\\test\\a.txt

fp.close()

fp=open("e:\\b.txt",encoding="gbk")
content=fp.read()
fp.close()
print(content)

 

2.读的时候处理文件状态:

import os

if os.path.exists("e:\\axxxxx.txt"):
    fp=open("e:\\axxxxx.txt",encoding="utf-8")
    content = fp.read()
    fp.close()
    print(content)
try:
    fp=open("e:\\axxxxx.txt",encoding="utf-8")
    content = fp.read()
    fp.close()
    print(content)
except IOError:
    print("此文件的读操作遇到io错误")

3.操作系统有资源句柄:一个指针指向了一个文件,就可以操作文件了,例如读写。

句柄在操作系统资源是有限的,65535个。如果所有句柄都被打开,且不释放,句柄泄露。

4.读行和读全部

>>> fp=open("e:\\hello.txt","r",encoding="gbk")
>>> fp.readline(2)
'白日'
>>> fp.readline(2)
'依山'
>>> fp.readline(2)
'尽\n'
>>> fp.readline(2)
'黄河'
>>> fp.close()

 5.遍历行

6.定位位置:fp.seek(offset[, whence])

  • offset -- 开始的偏移量,也就是代表需要移动偏移的字节数

  • whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

  • 返回值:如果操作成功,则返回新的文件位置,如果操作失败,则函数返回 -1。

  • gbk存中文,是两个字符;utf-8存中文,是三个字符。

  • utf-8文件,默认有bom。

>>> fp=open("e:\\a.txt","r",encoding="gbk")
>>> fp.readline()
'第一行\n'
>>>
>>> fp.readline()
'第二行\n'
>>> fp.seek(0,0)
0
>>> fp.readline()
'第一行\n'
>>> fp.seek(2,0)  #第一个参数表示第二个字节,第二个参数表示从第几行
2
>>> fp.readline()
'一行\n'
>>> fp.close()
>>> fp=open("e:\\a.txt","r",encoding="utf-8")
>>> fp.readline()
'\ufeff第一行\n'
>>> fp.readline()
'第二行\n'
>>> fp.readline()
'第三行\n'
>>> fp.seek(2,0)
2
>>> fp.readline()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Administrator.DESKTOP-LFNQE7C\AppData\Local\Programs\Python\Python37\li
b\codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 0: invalid start by
te
3
>>> fp.readline()
'第一行\n'
>>> fp.seek(6,0)
6
>>> fp.readline()
'一行\n'

练习:

>>> fp=open("e:\\a.txt")  #fp=open("e:\\a.txt","r",encoding="gbk")
>>> #默认使用gbk编码读取文件,并且使用读模式
...
>>> content=fp.read()
>>>
>>> print(content)
第一行
第二行
第三行

第五行
>>> fp.close()
#以上全读方式,如果文件很大,则把内存占满


>>> fp.readlines()
['第一行\n', '第二行\n', '第三行\n', '\n', '第五行']
>>> fp.close()



>>> fp=open("e:\\a.txt","r",encoding="gbk")
>>> for line in fp:
...    print(line)
...
第一行

第二行

第三行



第五行
>>> fp.close()
#以上,读大文件,应该按行读


>>> fp=open("e:\\a.txt","r",encoding="gbk")
>>> fp.readline()
'第一行\n'
>>> fp.readline()
'第二行\n'
>>> fp.readline().strip()
'第三行'
>>> fp.readline().strip()
''
>>> fp.readline().strip()
'第五行'
>>> fp.readline().strip()
''
>>> fp.close()

7.写:

"w":清空写

w:如果文件存在,则清空文件内容开始写;如果文件不存在,则新建文件后开始写内容。

写入时文件有缓存机制,可使用flush()方法,把缓存的命令执行。

"a":追加写

>>> fp=open("e:\\hello.txt","w",encoding="gbk")
>>> fp.write("白日依山尽\n")
6
>>> fp.write("黄河日还了\n")
6
>>> fp.flush()
>>> fp.close()
>>> fp=open("e:\\hello.txt","a",encoding="gbk")
>>> fp.write("欲穷千里目\n")
6
>>> fp.write("更上一层楼\n")
6
>>> fp.flush()
>>> fp.close()

8.写、读:

"w+"清空写,可以读

"r+"写,可以读

#1. r+新写入的内容会覆盖原文件中的内容,写入几个字符,则覆盖几个字符
#2. r+会从文件开头开始进行文件读写,所以每次写入时,都会从一开始(第一行)进行。如果先读后写,则会写在最后。
#3. \n换行符相当于两个字符
#4. r+写完后,文件指针会停留在新写入的字符后面,所以在read时,只read新写入字符后面的那些内容

>>> fp=open("e:\\hello.txt","w+",encoding="gbk")
>>> fp.write("白日依山尽\n")
6
>>> fp.write("黄河入海流\n")
6
>>> fp.seek(0,0)
0
>>> fp.read()
'白日依山尽\n黄河入海流\n'
>>> fp.close()

9.tell() 方法返回文件的当前位置,即文件指针当前位置。

>>> fp=open("e:\\hello.txt","r",encoding="gbk")
>>> fp.readline(2)
'he'
>>> fp.tell()
2
>>> fp.seek(0,0)
0
>>> fp.tell()
0
>>> fp.close()

10.二进制读:rb、wb

一般用于对图片的复制等操作。

>>> fp=open("e:\\1.jpg","rb")
>>> content=fp.read()
>>> fp1=open("e:\\new_1.jpg","wb")
>>> fp1.write(content)
28436
>>> fp.close()
>>> fp1.close()

11.os包

>>> import os
>>>
>>> os.name
'nt'
>>> os.linesep
'\r\n'
>>> os.pathsep
';'
>>> os.getcwd()  #查看当前所在目录
'E:\\'
>>> os.chdir("d:\\test")  #改变当前所在目录
>>> os.getcwd()
'd:\\test'
>>> os.listdir()
['1.jpg', 'a.txt', 'b.txt', 'c.txt', 'new_1.jpg']
>>> os.path.isfile("d:\\1.jpg")
False
>>> os.path.isfile("d:\\test\\1.jpg") #判断是不是文件
True
>>> os.path.isdir("d:\\test")  #判断是不是目录
True
>>> os.path.isdir("d:\\test\\1.jpg")
False
>>> os.path.exists("d:\\test\\1.jpg")  #判断路径是否存在
True
>>> os.path.exists("d:\\test\\2.jpg")
False
>>> os.path.split("d:\\test\\1.jpg")  #返回路径名和文件名
('d:\\test', '1.jpg')
>>> os.path.dirname("d:\\test\\1.jpg")  #返回路径名
'd:\\test'
>>> os.path.basename("d:\\test\\1.jpg")  #返回文件名
'1.jpg'
>>> os.makedirs("d:\\test\\test1\\test2")  #新建目录
>>> os.removedirs("d:\\test\\test1\\test2")  #删除目录
>>> os.remove("d:\\new_1.jpg")  #删除文件,文件不存在报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'd:\\new_1.jpg'
>>> os.remove("d:\\test\\new_1.jpg")  #删除文件
>>> os.path.splitext("d:\\test\\1.jpg")  #返回文件名和后缀名
('d:\\test\\1', '.jpg')

 

 

 

 

 

Python练习题021:猴子吃桃 题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 分析 采取逆向思维的方法,从后往前推断。 实现 x2=1 for day in range(1,10): x1=(x2+1)*2 x2=x1 pri... 阅读详情

相关推荐

无线Mesh组网全攻略:从原理、部署到调优与排障

对于布线困难的大户型、复式楼或园区,传统的无线中继往往面临带宽减半和链路不稳定的问题。无线Mesh网络通过多跳转发与自组织路由,让每个节点无需网线即可协作扩展覆盖,并依靠动态路径选择实现自愈。其核心技术涉及802.11s、HWMP路由协议,以及802.11k/v/r协同的无缝漫游,能有效提升终端切换体验。在实际部署中,设备选型、回程频段规划与布点位置直接决定网络质量。围绕无线Mesh的组网原理、设备选型、配置调优与故障排查,提供一套工程实践参考,帮助用户在复杂环境下构建稳定高效的无缝覆盖。

weixin_34098209的博客 273

解决stream.read(),codecs.py报错无法解析utf-8

将一个可以运行的py文件的代码复制的一个新建的py文件中,调试报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbd in position 591: invalid start byte。

m0_72775367的博客 1587

继电保护整定值计算软件_「全套69份」整定值计算与设计方案

【全套69份】整定值计算与设计方案,输电线路、变压器、发电机、电容器、母线保护等下载方式见文末内容预览:10kV高压电机保护原理及整定计算35kV环网运行线路继电保护整定计算方案分析35KV以下继电保护及三段式电流保护整定计算110 kv电网计算机整定计算新方案220kV两相式电铁牵引站供电线路的短路故障计算及其保护整定原则分析220kV周潮线接地距离保护整定计算特殊方案750 kV变压器保护配置...

weixin_30825953的博客 5017

python在使用redis时zadd错误

最近在看《redis实战》,在写zadd时报错 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-package...

weixin_30535843的博客 455

四类九种移位寄存器总结(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR|verilog代码|Testbench|仿真结果)

移位寄存器有哪些分类呢? 按移位方向分类:①单向移位寄存器(包括左移、右移)②双向移位寄存器 按循环方式分类:①循环移位寄存器②非循环移位寄存器 按部位的不同分类:①逻辑移位寄存器②算术移位寄存器 按输入输出方式分类:①串入串出②串入并出③并入串出④并入并出

Loudrs的博客 1万+

DS18B20温度传感器项目实战:从驱动编写到LCD显示,打造你的第一个温控系统

本文详细介绍了如何使用DS18B20温度传感器和LCD1602显示屏构建一个完整的温控系统。从硬件连接、OneWire协议实现到温度数据采集与LCD显示,全面解析了系统整合与工程化实现的关键步骤,帮助开发者快速掌握嵌入式温度监测系统的开发技巧。

weixin_42525328的博客 349

python中文件读取_python中的文件读写

1.文件操作要素1:文件路径2:操作方式3:编码方式2:文件操作方式2.1:r这里我在E盘根目录创建一个 测试文件.txt 作为例子,编码方式为gb2312,如下1 f = open('E:/测试文件.txt', mode='r', encoding='gb2312')2 context =f.read()3 print(context)4 f.close() #输出结果:pyth...

weixin_39706491的博客 285

HP SPP download

是一个全面的系统软件和固件更新解决方案,以单个ISO映像的形式提供。该解决方案使用智能更新管理器(SUM)作为部署工具。

极致,细节 9861

python中.readlines()和.strip() 函数的意义,两个斜杠//

python中.readlines()和.strip() 函数的意义 #依次读取每行 去掉每行头尾空白

weixin_41804312的博客 2811

干扰管理学习日志4-------信道估计方法 LS(最小二乘)、MMSE(最小均方误差)

信道估计,就是从接收数据中将假定的某个信道模型的模型参数估计出来的过程。如果信道是线性的话,那么信道估计就是对系统冲激响应进行估计。需强调的是信道估计是信道对输入信号影响的一种数学表示,而“好”的信道估计则是使得某种估计误差最小化的估计算法。本文主要讲述非盲信道估计中的LS估计和MMSE估计。LS全称为,即估计的信道参数与实际信道参数的差,进行平方求和后得到的误差累积最小。MMSE估计是LS估计的改进,在LS估计的最终结果的基础上乘以加权矩阵,使之与实际信道参数更为接近。

taiyuezyh的博客 1万+

博途的HMI(触摸屏)的应用

触摸屏(HMI):用于控制PLC,可认为是小型上位机(用于控制PLC的都可认为是上位机)上位机(PC Station):将触摸屏升级为电脑----工控机(工业控制的机器)用博途编写西门子的触摸屏和上位机。

王阿妹小天才的博客 2677

python中seek函数是干嘛的-关于python:seek()函数?

请在这里原谅我的困惑,但是我已经阅读了有关python中seek()函数的文档(必须使用它之后),尽管它对我有所帮助,但我对它的实际含义还是有些困惑,但任何解释都很多 谢谢,谢谢。关于seek(),不必担心太多。首先,对打开的文件进行操作时非常有用。重要的是要注意其语法如下:1fp.seek(offset, from_what)其中fp是您正在使用的文件指针; offset表示您将移动多少个位置;...

weixin_39600400的博客 3350

从数字后端角度谈谈occ电路(一)

摘要:本文介绍了芯片测试中OCC(On-Chip Clock Control)电路的设计与应用。随着工艺进步,芯片制造面临Stuck-at、Bridging和Delay等故障类型,需要不同时钟频率进行测试。OCC电路通过Clock Selection、Clock Chopping Control和Clock Gating三个模块,实现ATE时钟与PLL时钟的切换控制,支持慢速时钟检测Stuck-at故障和快速时钟检测Delay故障。文章详细解析了OCC电路结构及各模块功能,包括同步单元、移位寄存器等关键组件

芯冰乐 585

天梯赛训练L1-021——L1-030

【代码】天梯赛训练L1-021——L1-030。

qq_50196144的博客 368

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Day021 补充

一、4G内存怎么读取5G数据(python中的生成器、Linux的split命令) 1、使用python的生成器,一小段一小段数据读取 生成器:具有yield的函数就是生成器,是一个可以返回迭代器的函数 迭代器:知道遍历位置的对象,有iter()和next()方法 2、...

Melody_92的博客 199

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Day021: 一维列表的查找算法:线性查找

在 Python 编程中,查找算法是数据处理和分析中非常重要的一部分。对于一维列表的查找操作,线性查找是最基本也是最简单的查找算法之一。本文将详细介绍线性查找算法的原理、实现、优缺点以及应用场景。

u014481728的博客 850

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

day-021-异常处理实战

本文总结了Python异常处理的核心知识点,重点包括:1)自定义异常类的创建与使用原则(继承Exception、命名规范、提供上下文信息);2)异常链处理技巧(raise...from保留原始异常);3)异常处理最佳实践(try块最小化、详细错误信息、日志记录);4)实战案例演示了带指数退避的重试机制。文章还介绍了VS Code图形化调试工具的使用方法,并预告了后续模块与包管理的学习内容。全文强调错误处理应兼顾用户体验和开发调试需求。

chouchuang的博客 205

python入门编程100例(021-030)

""" p021:统计学生爱好的人数 """ if __name__ == '__main__': like_count = {} with open("./p021_student_like.txt", encoding="utf-8") as fp: for line in fp: line = line[:-1] sname, likes = line.split() like_list = l.

指尖魔法师 937

基于MAX14431BAEE+与STM32F071VB的SPI隔离通信设计与实现

SPI通信在工业现场常受地电位差和共模干扰影响,数字隔离器成为保障信号完整性的关键器件。其原理是通过电容隔离技术实现纳秒级传播延迟和通道间高匹配度,从而支持兆赫兹级同步时钟的可靠传输。在嵌入式系统中,合理选型隔离器并精确核算时序余量,可显著提升SPI链路在电机驱动、电力监测等场景下的抗干扰能力。以MAX14431BAEE+四通道数字隔离器与STM32F071VB主控为例,通过三隔离通道加单电源隔离方案,结合SPI外设配置与PCB布局优化,实现了稳定可靠的隔离SPI通信。

weixin_34343000的博客 242

python算法-移动零&盛最多的水--Day021

给定⼀个数组 nums ,编写⼀个函数将所有 0 移动到数组的末尾,同时保持⾮零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进⾏操作。示例:输⼊: nums = [0,1,0,3,12]输出: [1,3,12,0,0]class sol:left,right = 0,0#设置双指针while right< len(li):#设置循环条件= 0:li[left],li[right] = li[right],li[left]#当右指针不等于零时,左指针和右指针的值进行交换。

weixin_47970750的博客 506

day021python 正则表达式

正则表达式是由普通字符和元字符组成,    普通字符包含大小写字母, 数字. 在匹配普通字符 的时候我们直接写就可以了. 比如"abc" 匹配的就是"abc". 元字符: 元字符才是正则表达式的灵魂. 元字符中的内容太多了, 在这里我们只介绍一些 常用的 主要内容: 字符组 简单元字符 量词 惰性匹配和贪婪匹配 分组 转义  字符组...

weixin_30784945的博客 87

python week1 ,python总结1

1、Python的发展历史 Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于 1989 年发明,第一个公开发行版发行于 1991 年。Python 是纯粹的自由软件, 源代码和解 释器 CPython 遵循 GPL(GNU General Public License)协议。 Python 语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。Python 具 有丰富和强大的库。它常被昵称为胶水语言。 2、‘hello word’

XxBb_Pp的博客 488

python基础_Day05

而嵌套是由表及里的,只有外面条件符合时,才会执行里面嵌套的if语句,即有前提条件的情况下。实现一个猜拳小游戏(石头、剪刀、布),与电脑对战,规则是(石头胜剪刀,剪刀胜布,布胜石头,其中1代表石头,2代表剪刀,3代表布),当输入有问题时,会默认出布。在 Python 中,如果想使用源文件,需在另一个源文件里执行 import 语句,即import起到的是导包(模块)的作用,elif是if的进阶,在使用过程中,当if条件不成立时,如果还需要判断,则可以引用elif,再添加别的判定条件。

weixin_68486869的博客 859

Python学习--day 04

Python学习——day04020.格式化输出021.格式化使用 020.格式化输出 021.格式化使用

qinshimingyue27的博客 230

<LeetCode天梯>Day021 实现 strStr() (API法+切片比对法) | 初级算法 | Python

????作者简介:大家好,我是车神哥,府学路18号的车神???? ????个人主页:应无所住而生其心的博客_府学路18号车神_优快云博客 ????点赞➕评论➕收藏 == 养成习惯(一键三连)???? ????本系列主要以刷LeetCode(力扣)网站的各类题为标准,实现自我能力的提升为目标⚡ ⚡希望大家多多支持????~一起加油 ???? 专栏《LeetCode天梯》 工作日,周一了,今天出了点太阳,但风依旧刺骨,还是继续穿上你们小棉袄吧!疫情依旧反复,大家带好口罩啊~ 继续继续,来,今天和车神哥一

车手只需要车和手,压力来自轮胎 991

day021 MRO和c3算法

一. python的继承. 多继承 子类继承父类. 为什么要继承? 为了节省开发时间. 调高开发效率. 代码得到了重用 在python中存在多继承 MRO(method resolution Order) 方法路径顺序. python2 1. 使用经典类(写继承关系的...

weixin_33866037的博客 107
上一篇: python(day020——异常1)
下一篇: python(day022——文件操作2)
王总总
博客等级 码龄8年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值