python成长之路文件的基本操作Word文档下载推荐.docx
- 文档编号:18487926
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:8
- 大小:18.71KB
python成长之路文件的基本操作Word文档下载推荐.docx
《python成长之路文件的基本操作Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《python成长之路文件的基本操作Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。
Pycharm看类的方法:
三、文件操作
python是怎么操作文件的呢?
我们一起来看一下,一般来说对文件的操作有这么几种读写追加
open函数
不同模式打开文件的完全列表:
模式
描述
r
以只读方式打开文件。
文件的指针将会放在文件的开头。
这是默认模式。
rb
以二进制格式打开一个文件用于只读。
文件指针将会放在文件的开头。
r+
打开一个文件用于读写。
rb+
以二进制格式打开一个文件用于读写。
w
打开一个文件只用于写入。
如果该文件已存在则将其覆盖。
如果该文件不存在,创建新文件。
wb
以二进制格式打开一个文件只用于写入。
w+
wb+
a
打开一个文件用于追加。
如果该文件已存在,文件指针将会放在文件的结尾。
也就是说,新的内容将会被写入到已有内容之后。
如果该文件不存在,创建新文件进行写入。
ab
以二进制格式打开一个文件用于追加。
a+
文件打开时会是追加模式。
如果该文件不存在,创建新文件用于读写。
ab+
(1)打开文件
foo=open('
test'
'
r'
)#open是关键字,test是文件的名称,r是打开的模式为只读
print(foo)
<
_io.TextIOWrappername='
mode='
encoding='
cp936'
>
哦?
返回的是什么东东,原来在打开文件后,foo的值等于一个迭代器,迭代器是访问集合内元素的一种方式。
迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问一遍后结束。
迭代器不能回退,只能往前进行迭代。
那怎么能够看到里面的内容呢?
非常简单
(2)加载文件内容到内存
read()函数:
)
foo=foo.read()
只需要foo等于foo.read(),read函数的作用就是从一个打开的文件中读取一个字符串。
据说有人不喜欢read方式来读取文件!
!
这是为什呢呢?
因为:
read()的机制是将文件内容一股脑的读入内存,满足不了大家的需求
所以出现了readlines()一次性加载所有内容到内存,并按照行分割,合成列表
readlines()
ss=foo.readlines()
print(ss)
['
a\n'
'
bb\n'
ccc\n'
dddd\n'
eeeee'
]
纳尼\n是毛毛啊,哦原来是换行符吓老子一跳,还有人说了我就1M的内存读1G的文件,你不是要我命么,没关系python还有另外的方法来处理文件
readline()
每次仅读取一行数据,这样我们就可以for循环,处理到要处理的内容退出就好了
r+'
ss=foo.readline()
dd=foo.readline()
print(ss+dd)
a
bb
(3)读取中文文件
有勤快的小同学就试了试,尼玛为啥中文文件就报错呢?
其实呢,不是你写错的而是编码问题
①编码与解码
对于中文文件编码格式为gbk,所以在正常的情况下我们使用Pycharm进行调试时用的是uft-8的编码格式所以会报错
我们知道我们现在一般接触三种编码格式分别是,gbk,utf-8,unicode
unicode:
万国码Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
utf-8:
UTF-8用1到6个字节编码UNICODE字符。
用在网页上可以同一页面显示中文简体繁体及其它语言
GBK:
是汉字编码标准之一中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订
那么他们之间的关系是什么样的呢,其实主需要记住一点就好,gbk,utf-8它的源是unicode,所以呢请看下图
decode是解码,encode是编码,也就是gbk想要转换成utf-8就需要先把gbk解码成unicode,然后unicode在编码成utf-8,我们来试一下
②python2.7和3.5正常输出中文的多种方法
这些方法主要目的都是为了把编码变成utf-8
python2.7:
方法1:
在pycharm项目目录下用windows创建一个txt文件
ttt.txt'
ss=foo.read().decode('
gbk'
printss
一
二二
三三三
四四四四
五五五五五
六六六六六六
python3.5:
0.0是不是很郁闷他自己就可以不需要变换编码
ss=foo.read()
print(ss)
codecs函数重点来了:
不管是2.7还是3.5有一些特殊的情况无法输出中文字符则我们用到codecs这个函数
调用了codecs函数后:
其实呢方法很简单激素codecs这个函数也提供了open的方法,只需要codecs.open(‘文件名’,’打开模式’,’编码格式’)就好了。
注意:
使用pycharm切换2.7和3.5的时候可能出现混乱建议实际测试为准
(4)写入操作
python提供了这么多种打开方式,其实常用不没有几个r,r+,w,w+,a,a+我们一一来看①r+啥情况我前面的东西呢!
,额好吧全被替换掉了(推荐测试使用linu毕竟都是运行在linux中)
②w,汗以前的内容全被替换掉了,w+就不用测试了吧
③a哦原来追加到最后了为毛不换行!
在前面加个\n试试
(5)删除
对于python来说没有提供直接删除文件内容的功能,所以只能使用语句来判断(反正我是不知道)
例子:
反正是特别麻烦后面可以使用with来优化一下我来解释一下,首先打开文件,for当i的内容等于ccc\n的情况下什么也不做,否则添加入列表,因为有换行符所以有\n,最后用w+打开文件把列表中的内容写入进去即可
1foo=open('
text'
2aa=foo.readlines()
3ccc=[]
4foriinaa:
5ifi=='
:
6continue
7else:
8ccc.append(i)
9foo.close()
10
11foe=open('
w+'
12forissinccc:
13foe.write(iss)
14foo.close()
删除
(6)file对象的属性
以下是和file对象相关的所有属性的列表:
fo=open("
foo.txt"
"
r+"
print"
文件名:
"
fo.name
是否已关闭:
fo.closed
访问模式:
fo.mode
末尾是否强制加空格:
fo.softspace
结果:
foo.txt
False
wb
0
(7)文件定位
大家看到上面的打开方式的列表中有一个这样的词语‘指针’,那么这个指针就类似于光标定位的位置,所以在python中,就有这个定位的操作
原文件text
aaa
bbb
ddd
fff
①打开文件,为什这里只输出了aaabb呢,是因为read()后面加了个指针,指到了6,所以输出了这个,有人还问了那指到了6应该输出三个b啊现在怎么是两个呢,其实呢是因为你妹的还有个换行符占了个位置
1foo=open('
2aa=foo.read(6)
3print(aa)
4aaa
5bb
文件定位-打开文件
②查找当前位置tell()
aa=foo.read(3)
ss=foo.tell()
print(aa,ss)
③把指针再次重新定位到文件开头
2aa=foo.read(3)
3print(foo.tell())
4print(aa)
5foo.seek(0,0)
6print(foo.tell())
73
8aaa
90
重新定位指针
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- python 成长 文件 基本 操作