前言
为了持久的保存内存数据,我们一般把内存数据存储到本地磁盘中。
使用
为了从文件读数据或向文件写数据,需要使用open函数创建一个文件对象并使用这个对象read和write方法来读写数据。文本可以分为文本文件和二进制文件两类。但是计算机并不会区分二进制文件和文本文件。所有的文件都以二进制格式存储,因为实际上所有的文件都是二进制。
file = open(filename ,mode)
filename 返回一个文件对象,参数mode是一个指定这个文件将被如何使用(只读或只写)的字符串读写模式。
模式 | 描述 |
---|---|
"r" | 以读方式打开文件,只能读取文件,如果文件不存在,会放生异常 |
"w" | 以写方式打开文件,如果文件不存在,创建该文件,如果文件已经存在,里面含有内容会被清掉 |
"rb" | 以读二进制数据打开文件,只能读文件 , 如果文件不存在,会发生异常 |
"wb" | 以写入二进制数据打开,只能写文件, 如果文件不存在,创建该文件, 如果文件已存在,先清空,再打开文件 |
"rt" | 以文本读方式打开,只能读文件 ,如果文件不存在,会发生异常 |
"wt" | 以文本写方式打开,只能写文件, 如果文件不存在,创建该文件, 如果文件已存在,先清空,再打开文件 |
"rb+" | 以二进制读方式打开,可以读、写文件 , 如果文件不存在,会发生异常 |
"wb+" | 以二进制写方式打开,可以读、写文件, 如果文件不存在,创建该文件,如果文件已存在,先清空,再打开文件 |
"a" | 打开文件从文件末尾加数据 |
例如,下面的语句打开当前目录下一个名为datas.txt的文件来进行写操作。
相对路径:
file = open("datas.txt","w")
绝对路径:
file = open(r"E:\PythonCode\file\datas.txt","w")
绝对文件名前的r前缀表明这个字符串是一个行字符,这会使Python解释器将文件名中的反斜线理解为字面意义上的反斜线。如果没有r前缀,需要使用转义序列将上述语句改写为:
绝对路径:
file = open("E:\\PythonCode\\file\\datas.txt","w")
向文件里写内容
file = open(r"E:\PythonCode\file\datas.txt","w")
str = "Hello Python!"
file.write(str)
file.close()
文本数据
对文件进行写操作,当文件不存在的时候,那么open函数会创建一个新文件。如果文件已经存在,则会被新的数据内容覆盖重写,读写完文件之后记得关闭文件流。
判断文件是否存在
import os.path
if os.path.isfile("E:\\PythonCode\\file\\datas.txt"):
print("文件存在")
判断文件写的时候是否存在,防止文件内容被覆盖
读取文件内容
当要读取文件内容时,可以使用read方法从该文件读取特定数目的字符或者全部字符并将它们作为字符串返回,readline()方法读取下一行,而readlines()方法读取所有行并放入一个字符串列表中。
# 1、读取datas文件里面的所有内容
file = open(r"E:\PythonCode\file\datas.txt", "r")
print(file.read())
file.close()
print("--------------------------------------")
# 2、读取datas文件里面第一行
file = open(r"E:\PythonCode\file\datas.txt", "r")
line1 = file.readline()
line2 = file.readline()
line3 = file.readline()
print(line1 + line2 + line3)
file.close()
print("--------------------------------------")
# 3、读取datas文件里面读取特定字符数量
file = open(r"E:\PythonCode\file\datas.txt", "r")
print(file.read(4))
print(file.read(6))
file.close()
print("--------------------------------------")
# 4、读取datas文件里面所有内容返回成一个字符串列表
file = open(r"E:\PythonCode\file\datas.txt", "r")
print(file.readlines())
file.close()
运行结果:
Hello Python1!
Hello Python2!
Hello Python3!
--------------------------------------
Hello Python1!
Hello Python2!
Hello Python3!
--------------------------------------
Hell
o Pyth
--------------------------------------
['Hello Python1!\n', 'Hello Python2!\n', 'Hello Python3!']
第三种方法
通过指定读取4个字符,读取之后文件指针位置:
第一次读取
然后再读取后面的6个字符,读取之后文件指针位置:
第二次读取
file.read()方法来从文件读取所有数据,然后将它作为一个字符串返回。
file.readlines()方法从文件中读取所有数据,然后将它作为一个字符串列表返回。
向文件里面添加内容
"w" 会覆盖文件里面原先的内容,“a” 往文件里面原先内容追加内容
outfile = open(r"E:\PythonCode\file\datas.txt", "a")
outfile.write("这是后面追加的内容")
outfile.close()
后面追加的内容
删除文件
import os
os.remove(path)
Python 字符串前面加u,r,b的含义
1、字符串前加 u
例:u"我是含有中文字符组成的字符串。"
作用:后面字符串以 Unicode 格式进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。
2、字符串前加 r
例:r"\n\n\n\n” # 表示一个普通生字符串 \n\n\n\n,而不表示换行了。
作用:去掉反斜杠的转移机制,(特殊字符:即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常见的”\n”表示换行,”\t”表示Tab等。),常用于正则表达式,对应着re模块。
3、字符串前加 b
例: response = b'<h1>Hello World!</h1>' # b' ' 表示这是一个 bytes 对象
作用:b" "前缀表示:后面字符串是bytes 类型。网络编程中,服务器和浏览器只认bytes 类型数据。如:send 函数的参数和 recv 函数的返回值都是 bytes 类型。
网友评论