python history文件_【python之路19】文件操作

一、打开文件

文件句柄 = open('文件路径', '模式')

打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

打开文件的模式有:

r ,只读模式【默认】

w,只写模式【不可读;不存在则创建;存在则清空内容;】

x, 只写模式【不可读;不存在则创建,存在则报错】

a, 追加模式【可读;   不存在则创建;存在则只追加内容;】

#!usr/bin/env python#-*- coding:utf-8 -*-

f = open('history.log','r') #以只读模式打开文件

data = f.read() #读取内容并赋值给data

f.close()print(data)

#!usr/bin/env python#-*- coding:utf-8 -*-

f = open('history1.log','w',encoding='utf-8') #以只写模式打开文件,因为找不到文件,此时会创建history1.log

data = f.write('你好') #读取内容并赋值给data

f.close()

"+" 表示可以同时读写某个文件

r+, 读写【可读,可写】

w+,写读【可读,可写】

x+ ,写读【可读,可写】

a+, 写读【可读,可写】

"b"表示以字节的方式操作

rb  或 r+b

wb 或 w+b

xb 或 w+b

ab 或 a+b

注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型

可以用seek()和 tell()函数进行测试各个打开方式的不同,两个函数分别是:移动指针的位置、返回当前指针位置

1、r+的打开方式总结:

1)打开文件时,原文件中的内容不变

2)打开文件后,指针默认的位置处于0,此时写入数据从开始写入,覆盖后面的数据,如果是读取数据是从开始读取

3)可以读也可以写

4)只要读一次,不管读几个字符,写入的时候就会在尾部进行追加数据。所以读取数据后要想从开头或中间写入数据,需要用seek()改变指针位置。

f = open('history1.log','r+',encoding='utf-8') #history1中的内容为:hello,what is your name

print(f.tell()) #文件中的内容未变,返回0。说明:打开文件后当前指针为0的位置

data =f.read()print(data) #返回:hello,what is your name说明默认从0的位置读到末尾,此时指针在最后

f.write("my name is sunshuhai") #文件中的内容变为:hello,what is your namemy name is sunshuhai

f.close

2、w+的打开方式总结

1)如果文件存在,则打开原文件,并把原文件内容清空;如果文件不存在,则建立该空文件

2)指针指向0

3)写入后可以进行读取,需要用seek()移动指针的位置才能读取

f = open('history1.log','w+',encoding='utf-8') #history1中的内容为:hello,what is your name

print(f.tell()) #打开时文件中的内容被清空,此时指针处于0位置

f1= open('history2.log','w+',encoding='utf-8') #history2不存在该文件,运行代码后会自动创建history2.log文件

3、x+的打开方式总结

1)如果文件已经存在则报错,如果文件不存在则会创建新的文件

2)写入后可以进行读取,写入后指针处于最后,需要用seek()移动指针的位置才能读取

f = open('history1.log','x+',encoding='utf-8') #history1中的内容为:hello,what is your name

print(f.tell())

f.close()#报错,因为文件已经存在

f1 = open('history3.log','x+',encoding='utf-8') #history3不存在该文件,运行代码后会自动创建history3.log文件

4、a+的打开方式总结

1)如果文件已经存在则打开,如果不存在则创建

2)打开后原来的文件内容不变

3)默认的指针位置在最后

4)可以进行读和写

f = open('history1.log','a+',encoding='utf-8') #不存在则创建,存在则打开,此时history1.log中的内容为hello,what is your name

print(f.tell()) #返回23,说明:追加模式打开,指针会默认移到最后

data =f.read()print(data) #返回空,因为指针在最后,所以读取不到数据

f.write('你好') #此时内容为:hello,what is your name你好

f.close()

二、文件操作的主要功能函数

f = open('history1.log','r+',encoding='utf-8')

f.close()#关闭文件

f.flush() #在文件关闭前,就把写入的内容刷到硬盘

f.read(n) #默认则读取文件的全部内容,加参数则读取前几个字符(如果以b的方式打开则读取几个字节)

f.readline() #按行读取,默认读取当前指针所在的行

f.seek(n) #调整指针的位置,把指针放在n个字节处

f.tell() #获取指针的位置

f.truncate() #截取开始至当前指针位置中的内容,其他内容则删除

f.write() #向文件中写入内容

seek(0)表示移动到开头,移动到结尾: seek(0,2) seek的第⼆个参数表⽰的是从哪个位置进⾏偏移, 默认是0, 表 ⽰开头, 1表⽰当前位置, 2表⽰结尾

f.readlines() #把所有的行读入列表中,如果文件中的行数很多,内存消耗会很大,适应于行数较少的问件

f.xreadline() #2.x系列才有,生成文件每行的迭代器,相当于for i in f:

for循环打印输出文件的每一行:

f = open('history2.log','r+',encoding='utf-8')for line inf:print(line) #循环打印输出每一行

三、with文件打开方式

用with打开文件,with会自动给关闭,无需用f.close()

用with可以同时打开两个文件

with open('history2.log','r+',encoding='utf-8') as f:

data=f.read()print(data)#最后无需f.close(),with语句会自动给关闭文件

#python2.7及以后版本支持同时打开多个文件

with open('history1.log','r+',encoding='utf-8') as f1,open('history2.log','r',encoding='utf-8') as f2:print(f1.read())print(f2.read())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php微信拍照图库js接口,ThinkPHP微信实例——JSSDK图像接口多张图片上传下载并将图片流写入本地...

发布图片最多可添加9张作品发布wx.config({debug: false,appId: {$signPackage["appid"]},timestamp: {$signPackage["timestamp"]},nonceStr: {$signPackage["noncestr"]},signature: {$signPackage["signature"]},jsApiList: [// 所…

2、在控制台上输出1—100数字

public class Test {// 定义类 public static void main(String[] args) {// 主函数&#xff0c;程序的入口 for (int i 1; i < 100; i) { System.out.print(i " "); } }}转载于:htt…

vue防抖和节流是什么_JavaScript防抖与节流,你知道多少?

JavaScript 的节流和防抖已经是老生畅谈的问题了&#xff0c;对于前端行业技术大牛来讲不过是小菜一碟&#xff0c;而对于绝大多数前端小白或初级工程师&#xff0c;绝对是必备的知识&#xff0c;值得学习。接下来小郭就带大家一起学习“防抖”与“节流”。防抖不知道大家第一次…

php中循环跳过,php for循环的exit / break / continue /goto 停止、跳过循环、继续循环...

php 与 JavaScript 有很多相似的地方&#xff1b; for循环中也有两个相同&#xff1b; 只是 php 比 js 多了一个 exit &#xff0c; 其他用法一样&#xff1b;for($i 1;$i<11;$i){if($i3){// exit; //当$i 3 代码停止运行&#xff0c;包括循环外的&#xff0c;后面的也停止运…

checkbox:全选与反全选

$(document).ready(function () {//全选checkbox$("#selectAll").click(function () {var checked $(this).prop("checked");$(":checkbox").prop("checked", checked);});$("tbody :checkbox").click(function () {var is…

python连接influxdb_python 访问 InfluxDB 数据库

我们开发了一个基于 TelegrapgInfluxDBchonographkapacitor 的气象站监控演示系统。通过modular-2 连接了一个气象站传感器&#xff0c;采集温度&#xff0c;湿度&#xff0c;PM2.5&#xff0c;PM1.0 &#xff0c;照度&#xff0c;大气压等参数。通过MQTT 协议传送给Telegraph。…

location php,Nginx服务器中的location配置详解

语法location [|~|~*|^~] /uri/ {...}规则 &#xff1a; 表示精确的URI匹配(有兴趣的同学可以看一下url和uri的区别)&#xff5e;&#xff1a; 表示区分大小写的正则匹配&#xff5e;*&#xff1a;表示不区分大小写的正则匹配!~ && !~*&#xff1a;表示区分大小写不匹…

codevs4203山区建小学

/* 状态&#xff1a;f[i][j] 前i个村庄已经建了j个学校 转移&#xff1a;f[i][j]min&#xff08;f[i][j],f[ii][j-1]s[ii1][i]&#xff09; 1<ii<i-1 */ #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include &l…

gson解析php,php,android_关于 Gson 解析JSON数据。。。,php,android - phpStudy

关于 Gson 解析JSON数据。。。1.首先&#xff0c;我是从服务器端传回来的JSON数据如下&#xff1a;{"info":"succeed","user_id":"1","user_password":"9999","user_email":"95469qq.com",&q…

android安装python opencv_Python、C++、Android OpenCV 开发环境的配置

在 Mac 上折腾了一下 OpenCV 的配置&#xff0c;分别配置了 Python 、C 和 Android 上的开发环境&#xff0c;中间还遇到点坑&#xff0c;简要记录一下。OpenCV 的安装OpenCV 的安装有两种方式&#xff0c;可以通过下载源码自行编译&#xff0c;也可以通过homebrew来安装。源码…

如何防止用户重复提交表单

我们提交表单的时候&#xff0c;不能忽视的一个限制是防止用户重复提交表单&#xff0c;因为有可能用户连续点击了提交按钮或者是攻击者恶意提交数据&#xff0c;那么我们在提交数据后的处理如修改或添加数据到数据库时就会惹上麻烦。那么如何规避这中重复提交表单的现象出现呢…

java要频繁调用容器时_Java知识点梳理

1、Struts2和SpringMVC的区别(1)设计理念&#xff1a;前者为有状态的Action(均为多例)&#xff0c;Action对象属性字段承载请求、响应&#xff0c;后者一般为无状态的Controller&#xff0c;请求直接封装到方法的参数中&#xff1b;(2)集中访问点不同&#xff1a;都属于前端控制…

基于busybox的Linux小系统制作 (initrd)

我们有时候有需要在busybox基础上&#xff0c;制作linux&#xff0c;可是却不知道具体怎么做&#xff0c;这里将对基于busybox的linux小系统制作做出详细的步骤说明。准备环境&#xff1a;1、一个Redhat完整系统的虚拟机&#xff0c;本次实例使用的是Redhat Enterprise Linux 5…

Java异常持久化,Log4j进行日志的数据库持久化,说SQL语法异常。

Log4j进行日志的数据库持久化&#xff0c;说SQL语法错误。。。在properties的配置中。。。。log4j.appender.db org.apache.log4j.jdbc.JDBCAppenderlog4j.appender.db.BufferSize1log4j.appender.db.drivercom.mysql.jdbc.Driverlog4j.appender.db.URLjdbc:mysql://localhost…

实现光晕效果_马自达6车灯升级激光四透镜实现四近四远光

汽车前照明大灯升级案例车型&#xff1a;马自达6灯泡色温&#xff1a;5600K透镜案例&#xff1a;米石激光 TMF激光原车灯泡型号&#xff1a;H1 H1雾灯&#xff1a;H3原车瓦数&#xff1a;80-100W升级方式&#xff1a;支架安装方式&#xff1a;有密封胶性质&#xff1a;热LED解码…

我使用的Chrome插件列表

AdBlock 用来屏蔽广告的&#xff0c;有一些网站会探测出你在使用AdBlock。如果一定要继续浏览的话&#xff0c;你可能需要暂停一下AdBlock Vimium 非常推荐喜欢vim的用户试试看这款插件&#xff0c;它的主要特色是用类vim快捷键来管理chrome的常用操作&#xff0c;比如标签页的…

matlab欧拉法程序,欧拉法matlab程序.doc

欧拉法matlab程序.doc 1.Euler法function[x,y]naeuler(dyfun,xspan,y0,h)xxspan(1):h:xspan(2);y(1)y0;forn1:length(x)-1y(n1)y(n)h*f(dyfun,x(n),y(n));endxx ;yy ;x10:0.2:1;y1(12*x1).^0.5;plot(x,y,x1,y1)>>dyfuninline( y-2*x/y );[x,y]naeuler(dyfun,[0,1],1,0.2)…

python对平面设计帮助_平面设计工作心得

..平面设计工作心得平面设计工作心得为大家整理作为公司一名平面设计对自己基本工作情况的感受&#xff0c;对公司工作环境&#xff0c;公司领导&#xff0c;同事相处以及自己的本职工作的体会&#xff0c;下面是平面设计工作心得平面设计工作心得来到公司已经快两个月了。感觉…

python string与list互转

因为python的read和write方法的操作对象都是string。而操作二进制的时候会把string转换成list进行解析&#xff0c;解析后重新写入文件的时候&#xff0c;还得转换成string。 >>> import string >>> str abcde >>> list list(str) >>> l…

php只能用浏览器触发吗,PHP只允许某个域名或者URL访问调用不允许浏览器直接执行的方法...

我们在使用PHP建站的过程中&#xff0c;经常需要用到防止页面被外部调用的情况&#xff0c;这个时候主要是用到判断来路的$_SERVER[HTTP_REFERER] 参数&#xff0c;但是这也仅能防止一部分人&#xff0c;如果对方伪造来路&#xff0c;这个也没办法。不过日常使用是够了。这样可…