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

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

一.文件处理流程

  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的基本取值

CharacterMeaning
‘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

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

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

相关文章

前端每日实战:56# 视频演示如何用纯 CSS 描述程序员的生活

效果预览 按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。 https://codepen.io/comehope/pen/YvYVvY 可交互视频 此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。 请用 chrome, safari, edge 打开观看。 ht…

从特殊到一般-C#中的类

文章目录类的概念类的定义实例例子分析类的成员数据成员属性成员方法成员静态成员博主写作不容易,孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 类的概念 在日常生活中,类是对具有相同特性的一类是物的抽象。比如水果是一个类,它是对…

Chapter 1 First Sight——30

The girl sitting there giggled. Id noticed that his eyes were black — coal black. 那个坐在那里的女孩笑着。我注意到她的眼睛是很色的--炭黑色的。 Mr. Banner signed my slip and handed me a book with no nonsense about introductions. Banner 先生签了我的名字然后…

GPU 与CPU的作用协调,工作流程、GPU整合到CPU得好处

在不少人的心目中,显卡最大的用途可能就只有两点——玩游戏、看电影,除此之外,GPU并没有其他的作用了。但是随着微软IE9的正式发布,不少人突然发现,微软一直提到一个名词:GPU硬件加速,从而也让不…

[luoguP1029] 最大公约数和最小公倍数问题(数论)

传送门 一.暴力枚举&#xff08;加了点优化&#xff09; #include <cstdio>int x, y, ans;inline int gcd(int x, int y) {return !y ? x : gcd(y, x % y); }inline int lcm(int x, int y) {return x / gcd(x, y) * y; }int main() {int i, j;scanf("%d %d", …

CPU和GPU擅长和不擅长的方面

从它们执行运算的速度与效率的方面来探讨这个论题。CPU和GPU都是具有运算能力的芯片&#xff0c; CPU更像“通才”——指令运算(执行)为重数值运算&#xff0c; GPU更像“专才”——图形类数值计算为核心。在不同类型的运算方面的速度也就决定了它们的能力——“擅长和不擅长”…

一些IO流的知识

IO流&#xff1a; 输入流&#xff1a;输出流&#xff1a; 字节流&#xff1a;字符流&#xff1a;为了处理文字数据方便而出现的对象。 其实这些对象的内部使用的还是字节流(因为文字最终也是字节数据) 只不过&#xff0c;通过字节流读取了相对应的字节数&#xff0c;没有对这些…

为人示弱,做事留余 | 摸鱼系列

我很喜欢结交有很好的自然观察能力的朋友&#xff0c;这是种对周围环境和文化的洞察力。 一方面的原因是优秀的领导者、企业家和投资人能利用这种能力发现新市场&#xff0c;预测新潮流&#xff0c;设计出有效的市场营销活动&#xff0c;并找到需要重点关注的人群。 另一方面&a…

从一般到特殊-C#中的对象

文章目录对象的概念对象的创建和使用匿名类型和初始化器构造函数和析构函数构造函数析构函数范例参数传递博主写作不容易&#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 对象的概念 类是具有相同特征一类事物的抽象&#xff0c;而对象是类的实例。 类和对象…

如何用面对对象来做一个躁动的小球?

今天来看看怎样用面对对象来做一个躁动的小球。 首先我们先创建一个对象&#xff0c;他的属性包含小球的随机水平、纵向坐标&#xff0c;随机宽、高&#xff0c;随机颜色&#xff0c;以及创建小球的方法。 html: <div id"wrap"></div> js:function Boll(…

关于MyEclipse项目的名字的修改对项目导入导出的影响

不要修改项目名字&#xff0c;不管是在MyEclipse中(.project文件里面的额name会变)还是在G:\MyEclipseData目录下(.project文件里面的额name不会变)&#xff0c;否则导入的时候不能访问&#xff0c;会出现400的错误&#xff0c;而访问的网址必须是以前没改名前的那个名字才可以…

Gcc详解以及静态库、动态库生成

[转] Gcc详解以及静态库、动态库生成 http://www.360doc.com/content/10/0619/14/1795182_33985297.shtml 1。gcc包含的c/c编译器 gcc,cc,c,g,gcc和cc是一样的&#xff0c;c和g是一样的&#xff0c;(没有看太明白前面这半句是什 么意思:))一般c程序就用gcc编译&#xff0c;c程序…

改变世界的七大NLP技术,你了解多少?(上)

什么是NLP&#xff1f; 自然语言处理&#xff08;NLP&#xff09; 是计算机科学&#xff0c;人工智能和语言学的交叉领域。目标是让计算机处理或“理解”自然语言&#xff0c;以执行语言翻译和问题回答等任务。 随着语音接口和聊天机器人的兴起&#xff0c;NLP正在成为信息时代…

MINI类-结构体

文章目录结构体的定义和使用实例类和结构体的关系博主写作不容易&#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 结构体与类相似&#xff0c;通常用来封装小型的相关变量组&#xff0c;例如&#xff0c;学生的学号、姓名、性别、年龄等。结构是一种值类型&am…

由.def文件生成lib文件[转]

最近在学习curl库时&#xff0c;碰到一个问题&#xff0c;从官网上下载了一个lib版的&#xff0c;却发现只有.dll&#xff0c;没有lib文件&#xff0c;感觉很奇怪&#xff0c;google了之后才知道&#xff0c;原来库作者的用意是让用户自己生成lib文件&#xff0c;下载到的lib文…

union 和 union all 有什么不同?

假设我们有一个表 Student&#xff0c; 包括以下字段与数据&#xff1a;drop table student;create table student( idint primary key,name nvarchar2(50) not null,score number not null);insert into student values(1,Aaron,78);insert into student values(2,Bill,76);in…

暴风影音硬件加速播放高清影片

近年来&#xff0c;高清视频因为画面清晰、视觉效果好&#xff0c;越来越受到众多电脑用户的厚爱。暴风影音3.6版本在高清的支持上&#xff0c;笔者必须得说&#xff0c;是暴风影音在高清方面的一个大跨越&#xff0c;在这个技术上&#xff0c;暴风把KMP等播放器都远远的抛在后…

SSL双向认证的实现

2019独角兽企业重金招聘Python工程师标准>>> 环境 系统&#xff1a;archlinux/centOS nginx&#xff1a;nginx/1.12.2 浏览器&#xff1a;火狐firefox 前提&#xff1a;1.安装nginx。    2.安装openssl。 生成证书 新建工作目录 首先建立一个工作目录&#x…

partial 分部类-庞大类的瘦身计划

文章目录使用情况语法博主写作不容易&#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 一般来说&#xff0c;一个类、结构或者接口位于一个源文件中&#xff0c;但是某些情况&#xff0c;比如大型项目、特殊部署时&#xff0c;可能需要把一个类、结构或者接口放…

scroll-view——小程序横向滚动

这是官方给的布局代码 <view class"section"><view class"section__title">vertical scroll</view><scroll-view scroll-y style"height: 200px;" bindscrolltoupper"upper" bindscrolltolower"lower"…