python---文件读写-IO
IO----文件操作,读操作
1、open('文件名','打开方式',mode[buff]);------------->第一个参数是文件路径,第二个参数是打开方式(如果不写,默认是只读),第三个(可选)参数是设置读写文件的一个缓冲的大小
2、with open('文件名','打开方式') as f----------------------------->第一种不需要记,只需要记住这种用法就行
f.read([size]);------------------->使用read()方法读取,其中size参数是设置读写的字节大小,超过的不读取,。默认不设置就全部读取
f.readline([size]);----------------------->使用readline()方法读取,意思是只读取一行,其中size参数是设置读写的字节大小,超过的不读取。。默认不设置就全部读取
f.readlines([size(8192字节,IO下的buffer默认大小)]);[不推荐,若文件很大,会占用很大的内存空间]------------------------>使用readlines()方法读取,意思是读取文件中的每一行,并最终将每一行存入数组中返回,这样访问文件内容就可以像访问数组一样使用。
3、使用迭代器iter对文件内容进行读取【推荐】(好处:迭代器不是将内容导入内存中,而是每次在next时,自动读取下一条数据,这样可以不消耗内存的前提下对)
f=open('文件名');
liter=iter(f);-------->将文件转换成迭代器
lines=0;-------------->用来记录行数
for lines in liter:
lines+=1;----------->遍历文件,每次行数+1;
以上两种方式的结果是一样的(都是读出该文档中的所有内容为一个str对象),只不过第一种没有关闭(f.close()操作),第二种默认会有(f.close()操作),一般都用第二种方法
3、w模式下(只写),f.write('哈哈'),、f.writeline('的分对付对付对付')可以是列表元祖字符串[但必须是字符串所组成的序列]--------------------->这个是覆盖原内容,添加,w模式下,没有read()方法
4、a模式下(只写,追加),f.write('你好')----------------------->这个是在原内容下,在末尾增加,a模式下,没有read()方法
5、r模式下(只读),read();-------------------------------->这个是读取所有内容,以字符串输出
6、r+模式下(读写),read(),write()------------------------->最常用哒,这个写入是在原内容下,在头部添加
7、w+模式(读写),read(),write()---------------------------->这个写入跟w模式一样,都是覆盖原内容添加
8、与r相关的模式,文件必须存在,否则会报错:IOERROR
9、与w相关的模式,文件可以不存在,如果不存在,直接创建
10、与b相关的模式,都是以二进制进行读、写、读写(用途:读取一张图片)
遇到的问题:
①、SyntaxError: Non-UTF-8 code starting with '\xce' :这个是编码问题,在代码的最顶部加上【# -*- coding: utf-8 -*-】即可
②、文档中内容为【大家好】,但是使用read()打印出来是【锘垮ぇ瀹跺ソ】
检查1:目前python 的文件编码方式是【utf-8】,txt文档的编码格式也是【utf-8】,此时运行会出现②中的乱码问题
检查2:在代码中加入打开的格式,open(r'D:\Users\4399-3046\Desktop\test.txt', 'r',encoding='utf-8'),此时运行仍会报③中的错误
检查3:若把txt文档的编码格式改为其他,如【unicall】,此时运行仍会报③中的错误
检查4:修改项目的编码格式:setting---Editor-----File Encoding------都设置为【UTF-8】,此时运行仍会出现②中乱码问题
检查5:修改项目的读取方式,改为w---再改为r,就正常了,原因未知
③、UnicodeEncodeError: 'gbk' codec can't encode character '\ufeff' in position 0: illegal multibyte sequence-------从代码中可以看出肯定GBK是编码的问题
④、UnicodeDecodeError: 'gbk' codec can't decode byte 0xa1 in position 22: illegal multibyte sequence------从代码中可以看出肯定也是GBK编码的问题
尝试1:在代码中加入,忽略异常,open中加入(error='ignore')---结果不会再报上面的错误,但是会出现中文乱码,如问题②中一样-----这是解决以上办法最简单粗暴的方式
尝试2:在以上基础上,open中加入(encoding='utf8')或encoding='utf-8'后正常,展示正常
⑤、文件最后为什么一定要关闭close操作:原因一:是为了将写的内容同步到磁盘,原因二:是因为window操作系统打开的文件进程个数是有限的,原因三:如果打开的文件数达到上限,那么再次打开另一个文件是会失败的
文件文件,缓存问题
①、调用close()方法
②、
python---文件读写-IO的更多相关文章
- python文件读写及形式转化和CGI的简单应用
一丶python文件读写学习笔记 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode) filename:包含了你要访问的文件名称的字符串值. mo ...
- python 文件读写操作(24)
以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...
- 快速入门Python中文件读写IO是如何来操作外部数据的?
读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...
- 【学习】python文件读写,用with open as的好处,非常好【转载】
原文链接:http://www.cnblogs.com/ymjyqsx/p/6554817.html 备注:博主还有很多值得学习的笔记,遇到问题可以拜读,非常感谢博主的总结 读写文件是最常见的IO操作 ...
- python文件读写,以后就用with open语句
读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...
- Python文件读写、StringIO和BytesIO
1 IO的含义 在计算机中,IO是Input/Output的简写,也就是输入和输出. 由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就 ...
- Python 简明教程 --- 24,Python 文件读写
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 过去的代码都是未经测试的代码. 目录 无论是哪种编程语言,IO 操作都是非常重要的部分.I 即Inp ...
- Windows Phone 八、文件读写IO
文件存储的类型 •本地应用文件: •ApplicationData.Current.LocalFolder: •漫游应用文件: •ApplicationData.Current.RoamingFold ...
- Python 文件读写,条件循环(三次登录锁定账号实例)
通过文件读写,条件循环相关语法,实现三次登录失败则锁定该账号的功能 需求一 """需求描述: 1.输入正确账号,密码,退出程序 2.登录失败,重新输入账号密码 3.同一账 ...
- 文件读写IO
摘要:本文主要总结了以下有关文件读写的IO,系统调用与库函数. 1.初级IO函数:close,creat,lseek,open,write 文件描述符是一个整型数 1.1close 1.2int cr ...
随机推荐
- laravel sql复杂语句,原生写法----连表分组
### 使用了临时表.又分组又连表的感觉好难写,使用拉 ravel 但是现在越来也相信,没解决一个新的难题,自己又进步了一点点 ### 原生的sql: select user_code, realna ...
- [C]关于extern与struct
问题 我曾经很困惑,就是在两个编译单元当中,如何把一个单元中声明的struct结构引入到另外一个单元中来,折腾了很久,后来发现这位大神的留言 不是这么用的…… 类型的定义和类型变量的定义不同,类型定义 ...
- js设置睡眠N秒后再执行
function sleep(NumMillis) { var nowTime = new Date(); var exitTime = nowTime .getTime() + NumMillis; ...
- HTTP连接池
<context:property-placeholder location="classpath:conf/framework/httpclient.properties" ...
- Linux安装nodejs和npm
先安装,nvm,即是Node Version Manager(Node版本管理器) curl -o- https://raw.githubusercontent.com/creationix/nvm/ ...
- Golang的优雅重启
更新(2015年4月):Florian von Bock已将本文中描述的内容转换为一个名为endless的优秀Go包 . 如果您有Golang HTTP服务,可能需要重新启动它以升级二进制文件或更改某 ...
- LeetCode(98): 验证二叉搜索树
Medium! 题目描述: 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右 ...
- Python获取当前时间及时间转换(datetime)
datetime是Python处理日期和时间的标准库 获取当前时间 import datetime day = datetime.datetime.now() day2 = datetime.date ...
- Android Studio 设置编辑器(Editor)的字体、字体大小
操作系统:Windows 10 x64 IDE:Android Studio 3.2.1 参考:https://www.cnblogs.com/diyishijian/p/6824328.html 备 ...
- 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)
今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...