1.文件打开
我们使用open(),函数打开一个文件,这个函数有两个参数,第一个参数为文件名或者是路径,这个路径可以是绝对路径,也可以是相对路径,不过假如是文件名的话,需要在当前目录下,比如
Fobj = open(“mama.txt”),
Fobj = open(“code/mama.txt”),//相对路径
Fobj = open(“/home/code/mama.txt”),//绝对路径
第二个参数为
"r",以只读模式打开,你只能读取文件但不能编辑/删除文件的任何内容
"w",以写入模式打开,如果文件存在将会删除里面的所有内容,然后打开这个文件进行写入
"a",以追加模式打开,写入到文件中的任何数据将自动添加到末尾
"w+",以读写方式打开
"a+",以追加写方式打开
"ab",以追加写方式打开
"rb",以只读模式打开二进制文件
"wb",以写入模式打开,二进制文件
"wb+",以读写方式打开二进制文件
"ab+",以追加读方式打开二进制文件
这里的open和C++语言fopen函数的第二个参数模式一样
直接输出文件指针会出现以下结果:
>>> fboj =open("mama.txt")
>>> fboj
<_io.TextIOWrapper name='mama.txt'mode='r' encoding='UTF-8'>
会显示文件名,打开模式和编码方式
同样的,可以使用fboj.close()关闭文件,因为程序打开文件的个数使有限制的,当打开的文件超过限制的时候,程序可能会崩溃,并且每个打开的文件都会占用一定的内存资源,打开的文件不关闭会浪费大量的内存资源,并且文件一直处于打开的状态会有文件数据损坏或者是丢失的可能性
2.文件读取
使用read()函数读取整个文件,包括换行符,制表符,并且会在文件的末尾加上一个换行符
>>> fboj = open(“mama.txt”)
>>> fboj.read()
'sssssss\njintian shige haoriz\ngg fu gg\n'
read()在读取整个文件之后会把文件指针移动文件末尾
read(size) 有一个可选的参数 size,用于指定字符串长度。如果没有指定 size
或者指定为负数,就会读取并返回整个文件。当文件大小为当前机器内存两倍时,就会产生问题。反之,会尽可能按比较大的 size 读取和返回数据,注意这里的size指定的是字符串的长度
readline() 能帮助你每次读取文件的一行。
>>> fboj =open("mama.txt")
>>> fboj.readline()
'sssssss\n'
使用 readlines() 方法读取所有行到一个列表中
>>> fobj =open("mama.txt")
>>> fobj.readlines()
['sssssss\n', 'jintian shige haoriz\n', 'ggfu gg\n']
可以使用For循环遍历文件的每一行的字符串
>>> fobj =open("mama.txt")
>>> for x in fobj:
... print(x, end=' ')
sssssss
jintian shige haoriz
ggfu gg
这样写也是可以的for x infobj.readlines():
2.文件写入
让我们通过 write() 方法打开一个文件然后我们随便写入一些文本
>>> fobj =open("mama.txt",'w')
>>> fobj.write("mamamammamama")
13
可以看到,write的返回值是写入字符的个数
>>> fobj =open("mama.txt")
>>> fobj.read()
'mamamammamama'
我们可以看到,文件中原来的内容被覆盖掉了,这是因为,以w的方式打开文件会首先将文件的内容清空,然后在往里面写入内容,要想避免这种情况的发生,需要使用open()函数的’a’追加模式