热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python先返回再处理_python之文件处理

第一:文件基本处理流程1fopen(text)2one_linef.readline()3print(one_line:,one_line)#读取一行45pri

第一:文件基本处理流程

1 f=open('text')2 one_line=f.readline()3 print('one_line:',one_line) #读取一行

4

5 print('分割线'.center(50,'-')) #读取一行分割

6

7 end_line=f.read() #读取剩余的内容

8 print(end_line)9

10 f.close() #关闭文件

第三:文件打开方式

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

文件的打开模式有:

1 f =file(name[, mode[, buffering]])2

3 入口参数: name 文件名4

5 mode 选项,字符串6

7 buffering 是否缓冲 (0=不缓冲,1=缓冲, >1的int数=缓冲区大小)8

9 返回值 : 文件对象10

11 mode 选项:12

13 "r"以读方式打开,只能读文件 , 如果文件不存在,会发生异常14

15 "w"以写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件16

17 "a"追加模式,是可读的;如果不存在则创建;存在则只追加内容18

19 "rb"以二进制读方式打开,只能读文件 , 如果文件不存在,会发生异常20

21 "wb"以二进制写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件22

23 "ab"以二进制追加方式打开,可读的,如果文件不存在,创建该文件,如果文件存在,只追加新的内容24

25 补充:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码26

27 "r+"可以读、写文件 , 如果文件不存在,会发生异常28

29 "w+"可以读、写文件, 如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件30

31 "a+" 可读可写,如果文件不存在,则创建

总结:

r、w、a为打开文件的基本模式,对应着只读、只写、追加模式;

b、t、+、U这四个字符,与以上的文件打开模式组合使用,二进制模式,文本模式,读写模式、通用换行符,根据实际情况组合使用

第三:文件的字符编码

先看下文件存储的编码方式

1012270-20170220101055257-729025553.png

文件以UTF-8存储,已utf-8的编码方式可以打开

1012270-20170220101354741-1116563965.png

错误示例:使用gbk方式打开

1012270-20170220101455663-812157023.png

第四:文件中光标内置函数:

read & readline & readlines:

1 #打开文件

2 f = open("text", "r+")3

4 print(f.read(2)) #读取字节到字符串中,有可选参数size,默认是-1,如果为-1或复数则文件将会被读取到文件末尾。

5 #输出结果为: 12

6

7 print(f.readline(2)) #读取文件的一行,包括行结束符。同read()也有个可选参数size。

8 #输出结果: 34

9

10 print(f.readline()) #读取一行中剩余内容

11 #输出结果:567890

12

13 print(f.readlines())#读取所有(剩余的)然后将它们作为字符串列表返回,它有个可选参数sizhint代表返回的最大字大小

14 #输出结果:['abcde\n', 'ABCDE']

seek:seek(offset,where)

seek(offset,where): where=0从起始位置移动,1从当前位置移动,2从结束位置移动。当有换行时,会被换行截断。seek()无返回值,故值为None

示例:

1 f.seek(1,0) #从开始位置即文件首行首个字符开始移动一个字符

2 print(f.tell()) #此时tell()为1

3 print(f.readline()) #读取当前行的内容,即文件的第一行,从第二个字符开始读

4 #读取结果为:2345

tell:

文件的当前位置,即tell是获得文件指针位置,受seek、readline、read、readlines影响,不受truncate影响

示例:

1 f=open('text','w+') #文件以w+方式打开,则源文件被清空

2 print(f.tell()) #源文件被清空,故此时输出为0

3

4 f.write("12345") #在文件中写入12345,故站用5个字符

5 print(f.tell()) #此时tell()=5

truncate:

1 示例一:2 #打开文件

3 f = open("text", "r+")4 line =f.readline()5 print(line)6

7 #输出结果:12345

8

9 #截断剩下的字符串

10 f.truncate()11

12 #尝试再次读取数据

13 line =f.readline()14 print(line)15 #输出结果为空

16

17 #关闭文件

18 f.close()19

20 示例二:21 #打开文件

22 f = open("text", "r+")23

24 #截取3个字节

25 f.truncate(3)26

27 msg =f.read()28 print(msg)29

30 输出结果:123

31 #关闭文件

32 f.close()

第四:文件内置函数flush

flush()方法的理解:

1.文件的读取,是通过软件将文件从硬盘中读取到内存中

2.文件的写入,是通过软件将文件写入内存缓存区buffer中,然后刷到硬盘中。

现在如果写入内存的数据过大,并且内存速度比硬盘的速度要快,文件的数据都从内存刷到硬盘,内存与硬盘的速度延迟会被无限的放大,效率变低,所以要刷到硬盘的数据我们统一往内存的一小块空间即buffer中放,一段时间后操作系统会将buffer中数据一次性刷到硬盘

3.flush:用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。

1 #!/usr/bin/python

2 #-*- coding: UTF-8 -*-

3

4 #打开文件

5 f = open("file.txt", "wb")6 print(f)7

8 #刷新缓冲区

9 f.flush()10

11 #关闭文件

12 f.close()

第五:文件的open函数详解

open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

以上全部都是open的参数,有很多,但是常用的是file,mode,encoding

file:文件路径,这个要加上引号

mode:打开模式,详细见上面的第二:文件打开方式

buffering:的可取值有0,1,>1三个,0代表buffer关闭(只适用于二进制模式)(不缓冲),1代表line buffer(只适用于文本模式)(缓冲),>1表示初始化的buffer大小(缓冲区大小);

encoding:指定编码方式,一般是utf-8或者gbk

errors:一般取值为strict,ignore,当取strict的时候,字符编码出现问题的时候,会报错,当取ignore的时候,编码出现问题,程序会忽略而过,继续执行下面的程序。

newline:一般取值有None, \n, \r, ”, ‘\r\n',用于区分换行符,但是这个参数只对文本模式有效;

closefd:是与传入的文件参数有关,默认情况下为True,传入的file参数为文件的文件名,取值为False的时候,file只能是文件描述符,什么是文件描述符,就是一个非负整数,在Unix内核的系统中,打开一个文件,便会返回一个文件描述符。

file与open对比:(python2中同时含有file与open两方法,python3中只有open方法)

两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别:

file为文件类,用file()来打开文件,相当于这是在构造文件类,

open()打开文件,是用python的内建函数来操作。

建议不论python2还是python3都使用open来操作



推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • JS实现一键分享功能
    本文介绍了如何使用JS实现一键分享功能,并提供了2019独角兽企业招聘Python工程师的标准。同时,给出了分享到QQ空间、新浪微博和人人网的链接。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
author-avatar
mobiledu2502884243
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有