今天大佬给了个A文件给我,里面存放了机密数据。
什么机密数据???
有帅哥的联系方式吗?
赶紧打开来看一下
1.open() 函数基本版
Python大佬有个内置开文件的函数open(), 专门开文件的。它能打开一个文件,并且返回一个文件对象。(这个文件对象对应有一系列函数,用起来贼方便,这里不细讲,下篇见)
下面看一下它的语法:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
当然,一般我们会用到前面两个参数,一个为文件的路径(你要告诉人家地址,可以是绝对地址,也可以是相对地址,这样才能找到帅哥的家门呀);另一个用于指定你要以什么样的方式打开这个文件(有读、有写,具体方式见下面的讲解,默认使用'r',只读模式)。encoding呢,你乱码的时候找它就对了。
举个栗子
open('secret.txt')
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-1-0b7125542668> in <module>()
----> 1 open('secret.txt')
FileNotFoundError: [Errno 2] No such file or directory: 'secret.txt'
没文件!!!你竟敢把秘密藏起来
突然,想起,原来我把secret放在G盘了,写相对路径去找是不OK的呀
好啦好啦,我再开一遍
open('G:Pythonsecret.txt', 'r')
<_io.TextIOWrapper name='G:\Python\secret.txt' mode='r' encoding='cp936'>
open('G:Pythonsecret.txt')
<_io.TextIOWrapper name='G:\Python\secret.txt' mode='r' encoding='cp936'>
找到秘密文件啦!!!
如果你只是想只读这个文件,写不写'r'都行,make no difference
一般,我们会把这个文件对象挂个标签,叫他f什么的,那么后面就可以随意来个读、写操作
下面来示范操作
f = open('G:Pythonsecret.txt')
f.read()
'[Jason:21, 179, 70, 18813975806],[K:22, 180, 75, 18813975111]'
2.open() 进阶版——打开文件的方式
mode常见用法
mode参数千千万,第一次看的时候,我整个人是晕的
(你也太浮夸了),下面是一些常用的参数:
-
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
-
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
-
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
-
b 以二进制形式打开二进制文件,比如图片、视频、音频。
-
'+ ' 打开一个文件进行更新(可读可写)(通杀)
-
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
-
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
-
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
-
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
-
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
-
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
-
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件,如图片等。
-
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
-
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
更详细的可参见菜鸟教程相关文档。
**Remember that: **
r : read(读)
w : write(写)
a : append(附上,在后面加上)
英语学得好,写代码都简单一点
今天不讲读写操。先讲关闭文件。
3.关闭文件
3.1 一般关闭文件
文件使用完毕后一定一定要关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。
f.close()
酱就行了。
但是,打开文件,不一定都能打开呀,有时候打不开会报IOError,然后后面写的f.close()就不会被调用了。
有没有办法解决这个问题呢?
大佬们早解决了
优化版关闭文件
法一:try … finally …
try:
f = open('G:Pythonsecret.txt')
print(f.read())
finally:
if f:
f.close()
[Jason:21, 179, 70, 18813975806],[K:22, 180, 75, 18813975111]
上面看起来很繁琐,再来优化:
法二:with open(xxx) as f:
with open('G:Pythonsecret.txt') as f:
print(f.read())
[Jason:21, 179, 70, 18813975806],[K:22, 180, 75, 18813975111]
今天主讲开关文件,后面讲解读写操作,嗯,see you next time!