主要内容:

  • 小目标:掌握文件基本操作
  • 主要内容:

文件基本操作;

文件读写;

编码格式;

如果看完这篇文章,你还是弄不明白文件; 你来找我,我保证不打你,我给你发100的大红包。

先来看下文件:

  • 文件种类很多,txt,csv,excel等
  • 不同文件可以使用不同模块去进行操作

本文主要介绍文本文件操作。

1.文件操作基础

  • 来看下基本操作:打开,读写,关闭 代码实现:
#window下定义文件,使用r字符串fpath = r'E:est.txt'#open函数打开文件,返回文件对象f = open(fpath)#read方法,将文件读完lines = f.read()print(lines)f.close()

结果,文件内容:

thisistest

看似简单,但是里面有很多知识点,我们来看下。

2. 文件打开

几个问题:

1. 以什么方式打开

2. 以什么编码格式打开

3. 打开会有什么结果

2.1 打开文件:open函数详解

open函数定义:

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

主要参数:

open参数

2.2 mode详解

文件打开方式

组合方式参数说明:

文件打开方式

  • 二进制方式:'wb','rb','wb+'...;如上面操作类,需要加b选项

2.3 写入文件,发生了什么

  • 使用w方式打开文件并写入汉字:测试
#window下定义文件,使用r字符串fpath = r'E:1.txt'#open函数打开文件,返回文件对象wds = '测试'f = open(fpath, 'w')f.write(wds)print(f)f.close()

结果:

_io.TextIOWrapper name='E:1.txt' mode='w' encoding='cp936'

结果中可以看到:

文件路径:name

文件权限:w

文件编码格式:cp936,window下默认编码格式,linux下一般为utf-8

  • 写入文件内容是什么?

1. '测试'的编码格式为unicode,这个编码不能直接写入到f文件;

2. f.write写入时候,将wds进行编码,编码格式为'cp936';

3. 编码完成之后,再写入文件;

4. 文件写有缓存,写入数据只是到了缓存中;什么时候同步到磁盘?

5. 情况1:只有缓存中的数据到了一定数量同步一次;

6. 情况2:调用flush方法强制写; 情况3:调用close方法关闭文件;

2.4 编码格式问题

  • 读取上一步写入的文件
#window下定义文件,使用r字符串fpath = r'E:1.txt'#open函数打开文件,只读,编码格式为cp936f = open(fpath)print(f.read())f.close()

结果:测试

  • 使用utf-8编码格式打开
#window下定义文件,使用r字符串fpath = r'E:1.txt'#open函数打开文件,只读,编码格式为utf-8f = open(fpath, encoding='utf-8')print(f.read())f.close()

结果报错:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte

纠正:使用文件对应的编码格式打开,window下cp936与gbk等通用;

遇到这种问题:打开文件编码格式与文件自身编码格式不匹配。

3. 文件读取方式

方法说明:

read方法

3.1 遍历文件

  • 方式1 :for 循环遍历,推荐这种方式:
#window下定义文件,使用r字符串fpath = r'E:est.txt'#open函数打开文件,返回文件对象f = open(fpath)#逐行遍历文件for line in f:    print(line, end='')f.close()
  • 方式2:先将文件全部读出,然后逐行遍历
#window下定义文件,使用r字符串fpath = r'E:est.txt'#open函数打开文件,返回文件对象f = open(fpath)for line in f.readlines():    print(line, end='')f.close()

3.2 如何理解:f.readline(size=-1, /)

  • 如果一行数据长度大于size,读取size个返回
  • 如果一行数据长度小于size,读取行尾返回
fpath = r'E:est.txt'f = open(fpath)#读取3个print(f.readline(3))f.close()f = open(fpath)#读取10个print(f.readline(10))f.close()

结果:

thithis

3.3 文件写入

  • f.write(text, /):写入text,返回写入长度
  • f.writelines(lines, /):一次写入多行
  • f.flush():强制将缓存写入磁盘
  • 文件换行:'' 示例:
fpath = r'E:2.txt'#open函数打开文件,返回文件对象wds = '测试'f = open(fpath, 'w')f.write(wds)#换行f.write('')#写入多行f.writelines([wds+'']*2)f.close()

结果:

测试测试测试

4. seek操作

一个问题:文件读取之后,如何再次重新读取?

  • 方式1:关闭文件,再次读取
  • 方式2:使用seek操作
  • f.seek(cookie, whence=0, /):改变文件读写位置,
  • cookie为偏移量
  • whence为指定位置

whence说明0文件起始位置1文件当前位置,window只支持cookie=02文件结尾,window只支持cookie=0

读取为例:

fpath = r'C:甥敳獲hygDesktopdataest.txt'f = open(fpath)#读取3个line = f.read(3)print(line)#将读取位置设文件开头,向后偏移一个字节f.seek(1,0)line = f.read(3)print(line)#将读取位置设置到文件结尾f.seek(0, 2)line = f.read(3)print(line)

结果:

thihis

总结: 文件操作注意点:

  • 打开方式,尤其适用w方式,注意文件会被清空
  • 读写二进制文件,需要使用'rb'或者'wb'方式
  • 读取文件推荐使用for遍历
  • 文件写入注意换行使用''

的write方法有哪些参数_Python笔记13:文件操作三件套:read,write,seek相关推荐

  1. python文件替换一行_python基础_文件操作实现全文或单行替换的方法

    这篇文章主要介绍了关于python基础_文件操作实现全文或单行替换的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 python修改文件时,使用w模式会将原本的文件清空/覆盖.可以 ...

  2. python io操作有什么_Python笔记:文件IO操作

    读取文件 使用open()打开文件,文件不存在会抛出IOError错误. try: f = open('/path/to/file', 'r') print(f.read()) finally: if ...

  3. 笨方法“学习python笔记之文件操作

    python 与其他语言相比,操作文件非常方便,提供了良好的API. Open函数 python是以文件对象的方式来操作文件,操作文件之前首先要打开文件产生一个文件对象,以便进行后续操作. open( ...

  4. python文件是什么的集合和抽象_python学习笔记(三):文件操作和集合

    这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件file.txt: 1 2 3 ...

  5. python3 读取.plist文件_Python学习笔记 -5 - 文件操作

    Python文件操作 读写文件是最常见的IO操作,在磁盘上读写文件的功能都是由操作系统提供的,操作系统不允许普通的程序直接操作磁盘(大部分程序都需要间接的通过操作系统来完成对硬件的操作),所以,读写文 ...

  6. C++ 学习笔记之——文件操作和文件流

    1. 文件的概念 对于用户来说,常用到的文件有两大类:程序文件和数据文件.而根据文件中数据的组织方式,则可以将文件分为 ASCII 文件和二进制文件. ASCII 文件,又称字符文件或者文本文件,它的 ...

  7. python文件操作的一般步骤_Python基础之文件操作

    ​ 应用程序运行过程中产生的数据最先都是存放于内存中的,若想永久保存下来,必须要保存于硬盘中.应用程序若想操作硬件必须通过操作系统,而文件就是操作系统提供给应用程序来操作硬盘的虚拟概念,用户或应用程序 ...

  8. 简明 Python 教程学习笔记_7_文件操作(os、shutil、pathlib )

    参考 :http://www.cnblogs.com/nulige/archive/2016/12/06/6037752.html 在很多时候,你会想要让你的程序与用户(可能是你自己)交互.你会从用户 ...

  9. python 文件操作不被打断_python学习六文件操作和异常处理

    1.文件的定义和类型 什么是文件呢? 文件是数据的抽象和集合 文件是存储在辅助存储器上的数据序列 文件是存储的一种 文件有哪些类型呢? 本质上所有文件以二进制储存,不过又可以分为文本文件和二进制文件 ...

最新文章

  1. python展开 c函数中的宏预处理_最基本的宏函数 课后习题9.2 (C语言代码)
  2. oracle定时器每天下午6点_周五下午6点到8点 万盛经开区党工委书记、管委会主任袁光灿直播带货...
  3. java.net.SocketException四大异常解决方案---转
  4. frameset 后台管理_易达CMS下载-易达CMS(免费开源网站管理系统)v3.0.0.1103免费版
  5. php post获取dvi,如何利用http来发送post请求
  6. 通过ntdll.dll提供的API函数实现当前进程的枚举
  7. [Ext JS 4] 实战之Load Mask - 在Grid Reconfigure的使用状况
  8. Java入门视频教程
  9. php计算指数函数,指数函数运算法则公式有哪些
  10. 可用性设计之过载保护
  11. 硬盘SMART检测参数attributes详解
  12. 服务器重启后samba启动不了,提示stop: Unknown instance: smbd start/running, process 76585
  13. 求三角形外接圆 hdu4720
  14. vue项目中swiper动态更新后无法轮播问题 附带案例代码
  15. 求助:mysql中可以正常启动项目,local:8080可以正常打开,但项目网页local:8080/zwsl没办法打开
  16. deployer部署_Laravel使用CircleCI和Deployer进行连续部署
  17. 可怜的RSA【网络攻防CTF】(保姆级图文)
  18. Python全栈学习笔记day 40.5+:线程池和线程池的Python标准模块--concurrent.futures
  19. 校招vivo技术面试总结
  20. HTML学习之块级元素和行内元素的特征和区别(一)

热门文章

  1. bo dto java vo_Java 键对象 KO (key object) 介绍
  2. Makefile:GCC CFLAGS变量和LDFLAGS变量
  3. java转二进制ascii_在Java卡中将整数的二进制表示形式转换为ASCII
  4. python歌星大赛评分_2018年机器阅读理解技术竞赛模型,BLEU-4评分排名第6, ROUGE-L评分排名第14...
  5. python中字符串函数的用法_python中字符串内置函数的用法介绍(代码)
  6. 实验3-8 输出三角形面积和周长 (15 分)
  7. 不是外部命令也不是可运行程序_手机运行内存4G和6G有什么不同?差别不是一般大...
  8. vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
  9. 车牌识别算法库EasyPR的编译实战
  10. sudo报错案例-RHEL6