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 ...
随机推荐
-
SQL SERVER全面优化-------索引有多重要?
想了好久索引的重要性应该怎么写?讲原理结构?我估计大部分人不愿意看,也不愿意花那么多时间仔细研究.光写应用?感觉不明白原理一样不会用.举例说明?情况太多也写不全....到底该怎么写呢? 随便写吧,想到 ...
-
转:什么是即时编译(JIT)!?OpenJDK HotSpot VM剖析
重点 应用程序可以选择一个适当的即时编译器来进行接近机器级的性能优化. 分层编译由五层编译构成. 分层编译提供了极好的启动性能,并指导编译的下一层编译器提供高性能优化. 提供即时编译相关诊断信息的JV ...
-
iOS 顺传
ios 顺传一层的话,直接用属性 改变里面的值 顺传穿两到三层的话 使用KVO // 设置item - (void)setItem:(UITabBarItem *)item { _item = ite ...
-
php 多进程workman服务器框架
今天搜php socket,发现了一个给力的php写socket的框架workman,有机会要用用. 好给力,原来那个小蝌蚪聊天室就是用这个开发的. 仿佛发现了新大陆.
-
Flume连接Kafka的broker出错
在启动Flume的时候,出现下面的异常,但是程序照样能运行,Kafka也能够收到数据,只是偶尔会断点. 2016-08-25 15:32:54,561 (SinkRunner-PollingRunne ...
-
Makefile里调用Shell注意点
http://www.linuxidc.com/Linux/2012-04/59093.htm 大家经常编写和使用Makefile, Makefile里面也经常用到shell, 但对其中一些需要注意的 ...
-
iOS如何在应用中添加图标更换功能
一.在info.plist中设置图标信息 首先将需要更换的图标按照下面的方式声明,以便我们能够正常调用文件和方法.注意,每个图标的图标名称和对应的文件名要一一对应. 二.在工程根目录下添加图标文件 图 ...
-
DataCommand和DataAdapter
SqlDataReader 高效,功能弱,只读访问SqlDataAdapter 强大,要求资源也大一点 SqlDataReader 只能在保持跟数据库连接的状态下才可以读取... SqlDataAda ...
-
让ASP.NET Web API支持$format参数的方法
在不使用OData的情况下,也可以让ASP.NET Web API支持$format参数,只要在WebApiConfig里添加如下三行红色粗体代码即可: using System; using Sys ...
-
powerdesigner 生成数据库脚本
PowerDesigner导出所有SQL脚本 操作:Database=>Generate Database PowerDesigner怎么导出建表sql脚本 1 按照数据库类型,切换数据库. D ...