第六篇:python基础之文件处理

阅读目录

  • 一.文件处理流程
  • 二.基本操作
  • 2.1 文件操作基本流程初探
  • 2.2 文件编码
  • 2.3 文件打开模式
  • 2.4 文件内置函数flush
  • 2.5 文件内光标移动
  • 2.6 open函数详解
  • 2.7 上下文管理
  • 2.8 文件的修改

一.文件处理流程

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件

二.基本操作

2.1 文件操作基本流程初探

f = open('chenli.txt') #打开文件
first_line = f.readline()
print('first line:',first_line) #读一行
print('我是分隔线'.center(50,'-'))
data = f.read()# 读取剩下的所有内容,文件大时不要用
print(data) #打印读取内容f.close() #关闭文件

2.2 文件编码

文件保存编码如下

此刻错误的打开方式
f=open('chenli.txt',encoding='utf-8')
f.read() 

正确的打开方式
#不指定打开编码,默认使用操作系统的编码,windows为gbk,linux为utf-8,与解释器编码无关
f=open('chenli.txt',encoding='gbk') #在windows中默认使用的也是gbk编码,此时不指定编码也行
f.read()

2.3 文件打开模式

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

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

打开文件的模式有:

  • r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
  • w,只写模式【不可读;不存在则创建;存在则清空内容】
  • x, 只写模式【不可读;不存在则创建,存在则报错】
  • a, 追加模式【可读;   不存在则创建;存在则只追加内容】

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

  • r+, 读写【可读,可写】
  • w+,写读【可读,可写】
  • x+ ,写读【可读,可写】
  • a+, 写读【可读,可写】

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

  • rb  或 r+b
  • wb 或 w+b
  • xb 或 w+b
  • ab 或 a+b

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

2.4 文件内置函数flush

flush原理:

  1. 文件操作是通过软件将文件从硬盘读到内存
  2. 写入文件的操作也都是存入内存缓冲区buffer(内存速度快于硬盘,如果写入文件的数据都从内存刷到硬盘,内存与硬盘的速度延迟会被无限放大,效率变低,所以要刷到硬盘的数据我们统一往内存的一小块空间即buffer中放,一段时间后操作系统会将buffer中数据一次性刷到硬盘)
  3. flush即,强制将写入的数据刷到硬盘

滚动条:

import sys,timefor i in  range(10):sys.stdout.write('#')sys.stdout.flush()time.sleep(0.2)

2.5 文件内光标移动

注意:read(3)代表读取3个字符,其余的文件内光标移动都是以字节为单位如seek,tell,read,truncate

整理中

2.6 open函数详解

1. open()语法

open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])
open函数有很多的参数,常用的是file,mode和encoding
file文件位置,需要加引号
mode文件打开模式,见下面3
buffering的可取值有0,1,>1三个,0代表buffer关闭(只适用于二进制模式),1代表line buffer(只适用于文本模式),>1表示初始化的buffer大小;
encoding表示的是返回的数据采用何种编码,一般采用utf8或者gbk;
errors的取值一般有strict,ignore,当取strict的时候,字符编码出现问题的时候,会报错,当取ignore的时候,编码出现问题,程序会忽略而过,继续执行下面的程序。
newline可以取的值有None, \n, \r, ”, ‘\r\n',用于区分换行符,但是这个参数只对文本模式有效;
closefd的取值,是与传入的文件参数有关,默认情况下为True,传入的file参数为文件的文件名,取值为False的时候,file只能是文件描述符,什么是文件描述符,就是一个非负整数,在Unix内核的系统中,打开一个文件,便会返回一个文件描述符。

2. Python中file()与open()区别
两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作,建议使用open

3. 参数mode的基本取值

Character Meaning
‘r' open for reading (default)
‘w' open for writing, truncating the file first
‘a' open for writing, appending to the end of the file if it exists
‘b' binary mode
‘t' text mode (default)
‘+' open a disk file for updating (reading and writing)
‘U' universal newline mode (for backwards compatibility; should not be used in new code)

r、w、a为打开文件的基本模式,对应着只读、只写、追加模式;
b、t、+、U这四个字符,与以上的文件打开模式组合使用,二进制模式,文本模式,读写模式、通用换行符,根据实际情况组合使用、

常见的mode取值组合

 1 r或rt 默认模式,文本模式读2 rb   二进制文件3     4 w或wt 文本模式写,打开前文件存储被清空5 wb  二进制写,文件存储同样被清空6     7 a  追加模式,只能写在文件末尾8 a+ 可读写模式,写只能写在文件末尾9
10 w+ 可读写,与a+的区别是要清空文件内容
11 r+ 可读写,与a+的区别是可以写到文件任何位置 

2.7 上下文管理

with open('a.txt','w') as f:pass

with open('a.txt','r') as read_f,open('b.txt','w') as write_f:data=read_f.read()write_f.write(data)

2.8 文件的修改

import os
with open('a.txt','r',encoding='utf-8') as read_f,\open('.a.txt.swap','w',encoding='utf-8') as write_f:for line in read_f:if line.startswith('hello'):line='哈哈哈\n'write_f.write(line)os.remove('a.txt')
os.rename('.a.txt.swap','a.txt')

转载于:https://www.cnblogs.com/zatzsr98/p/7049660.html

第六篇:python基础之文件处理相关推荐

  1. python基础教程怎么看_八、给小白看的第一篇Python基础教程

    本文是第一篇,一共四篇打下Python基础 「@Author:Runsen」 「@Date:Writern By 2019/04/15 and supplied By 2020/3/31」 「@公众号 ...

  2. 九、给小白看的第二篇Python基础教程

    本文是第二篇 @Author:Runsen @Date:Writern By 2019/04/15 and supplied By 2020/3/31 @公众号:Python之王 本系列Python基 ...

  3. 八、给小白看的第一篇Python基础教程

    本文是第一篇,一共四篇打下Python基础 @Author:Runsen @Date:Writern By 2019/04/15 and supplied By 2020/3/31 @公众号:Pyth ...

  4. 十、给小白看的第三篇Python基础教程

    本文是第三篇,一共四篇打下Python基础 @Author:Runsen @公众号:Python之王 上面两个基本搞定了Python中数据结构,下面花一篇讲讲最重要的类. 7.面向对象编程 万物皆是对 ...

  5. 第一篇:python基础

    python基础 python基础 本节内容 python起源 python的发展史 为什么选择python3 第一个python程序 变量定义 表达式和运算符 用户输入 流程控制 判断 流程控制 循 ...

  6. 二十六篇,Linux库文件(动态库和静态库)的制作。

    一.嵌入式linux库文件概念. 1.什么是库文件? 在linux下,有非常多的库文件. 例如: /lib                        --> 存放系统自带的库文件       ...

  7. python文件处理基础_第六篇:python基础之文件处理

    阅读目录 一.文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 正趣果上果 Interesting fruit fruit 词:郭婞 曲:陈粒 编曲/混音/和声: ...

  8. python基础序列化文件的读取(十六)

    主要第三方库是pickle import pickle # python对象的序列化 class Peoper:def __init__(self,name,age):self.name=namese ...

  9. 第七篇 python基础之函数,递归,内置函数

    阅读目录 一 数学定义的函数与python中的函数 二 为何使用函数 背景提要 三 函数和过程 四 函数参数 五 局部变量和全局变量 六 前向引用之'函数即变量' 七 嵌套函数和作用域 八 递归调用 ...

最新文章

  1. 【转帖】如何通过 javascript 访问 GridView/DataGrid 选中 CheckBox 行各列的值
  2. 转 互联网推送服务原理:长连接+心跳机制(MQTT协议)
  3. this指向undefined uiapp_this为什么会为undefined?
  4. 前端学习(2101):javascript高阶函数得使用
  5. 白云山脚下的廉价菜-饮胜酒家
  6. 计算机or笔记本,笔记本or台式机?大学生第一个烦恼被它解决了
  7. springboot整合shiro_Springboot整合Shiro:简洁的身份认证
  8. 实验三 lr分析器的设计与实现_实验室规划设计趋势之一灵活性|无风管通风柜的灵活性是如何实现的?...
  9. Flutter基础—常用控件之图片
  10. 行业案例 | 悬镜DevSecOps智适应威胁管理解决方案获评信通院“2021云安全守卫者计划优秀案例”
  11. 360站长工具-免费360链接提交主动推送收录工具自带收录排名蜘蛛查询
  12. 008_生成设备节点
  13. Keras:使用预训练模型迁移学习单通道灰度图像
  14. 【操作系统】3.进程管理
  15. pygame 大球吃小球
  16. 【人工智能行业大师访谈2】吴恩达采访 Pieter Abbeel
  17. 房源管理系统 房源系统 房源源码 房友 房在线 鼎尖 易遨 房源管理系统
  18. 使用Naive Bayes进行文本分类
  19. Linux 锐捷 用户不允许,mentohust“不允许使用的客户端类型”的解决方法
  20. linux下基于ipmsg协议的飞鸽传书(一)

热门文章

  1. js模块化之模块依赖处理
  2. SIFT算法原理(不带公式)
  3. 机器学习 文本分类 代码_无需担心机器学习-如何在少于10行代码中对文本进行分类
  4. Python中机器学习的特征选择技术
  5. 使用Xcap发送网络数据包
  6. 按揭买的房,房产证为什么要放在银行,自己要用房产证怎么办?
  7. 找出那个数字出现3次的数字
  8. ucos ii 文件分析
  9. android webview 禁止放大缩小,WebView无法放大缩小解决方案
  10. mysql客户端版本太低_windows一机多装mysql,5.5低版本+5.8高版本