文本文件:由于编码格式的不同,所占磁盘空间的字节数不同
二进制文件:没有统一的编码文件直接由零或一组成,需要使用指定的软件才能打开。
变量名=open(filename,mode,encoding)mode(写,读)
2.操作文件
变量名.read()
变量名.write(s) s字符串对象
3.关闭文件
变量名.close()
def my_writer():
#打开文件,如不存在则创建文件
file=open('a.txt','w',encoding='utf-8')
#操作文件
file.write('伟大中国梦')
file.close()
def my_reader():
# 打开文件,如不存在则报错
file=open('a.txt','r',encoding='utf-8')
#操作文件
s=file.read()
print(type(s),s)
file.close()
if __name__=='__main__':
my_writer()
my_reader()
r:以只读模式打开文件指针,在文件的开头,如果文件不存在程序抛异常
rb:以只读模式打开二进制文件,如图片文件
w:覆盖写模式,文件不存在则创建文件,存在则内容覆盖
wb:代写模式写入二进制数据文件,不存在则创建文件,存在则覆盖
a:追加写模式,文件不存在则创建文件,存在则在文件最后追加内容
+:与w/r/a一同使用,在原功能的基础上增加同时读写功能
file.read(size):从文件中读取size个字符或字节,如果没有给定参数,则读取文件中的全部内容。
file.readline(size):获取文件中的一行数据,如果给定参数,则为读取的这一行中的size个字符或字节。
file.readlines():从文件中读取所有内容,结果为列表类型。
file.write(s):将字符串s写入文件
file.writelines(lst):将内容全部为字符串的列表lst写入文件。
file.seek(offset):改变当前文件操作指针的位置,英文占一个字节,中文gbk编码占两个字节,utf-8编码占三个字节。
def my_read(filename):
f=open(filename,'w+',encoding='utf-8')
f.write('你好啊')
s=f.read()
print(s)
#seek修改文件指针的位置
f.seek(0)
s=f.read()
print(type(s),s)
f.close()
if __name__ == '__main__':
my_read('c.txt')
先打开的后关,后打开的先关
'./'代表的是当前目录
'../'代表上级目录
又称上下文管理器,在处理文件时,无论是否产生异常,都能保证with语句执行完毕后关闭已经打开的文件,这个过程是自动的,无需手动操作
语法结构
with open()as file:
pass
def write_fun():
with open('aa.txt','w',encoding='utf-8')as file:
file.write('2022北京冬奥会欢迎您')
def read_fun():
with open('aa.txt','r',encoding='utf-8')as file:
print(file.read())
def copy_fun(filename,new_file):
with open(filename,'r',encoding='utf-8')as f1:
with open(new_file,'w',encoding='utf-8')as f2:
f2.write(f1.read())
if __name__ == '__main__':
write_fun()
read_fun()
copy_fun('aa.txt','dd.txt')
也称为数据的组织方式或存储方式,在Python中常用的数据组织方式可分为一维数据,二维数据和高维数据
一维数据:通常采用线性方式组织数据,一般使用Python中的列表,元组或者集合进行存储数据
二维数据:也称表格数据,由行和列组成,类似于Excel表格,在Python中使用二维列表进行存储
高维数据:高级数据则是使用key-value方式进行组织数据,在Python中使用字典进行存储数据。在Python中内置的json模块专门用于处理json(JavaScript Object Notation)格式的数据
一维数据
def my_write():
lst=['张三','李四','王五','陈六','麻七']
with open('./data/student.csv','a')as file:
file.write(','.join(lst))#将列表转成字符
file.writelines(lst)
def my_read():
with open('./data/student.csv','r')as file:
s=file.read()
lst=s.split(',')
print(lst)
if __name__ == '__main__':
my_write()
my_read()
二维数据
def my_write_table():
lst=[
['商品名称','单价','采购数量'],
['水杯','98.5','20'],
['鼠标','89','100']
]
with open('./data/table.csv','w',encoding='utf-8')as file:
for item in lst:
line=','.join(item)
file.write(line)
file.write('\n')
def my_read_table():
data=[]
with open('./data/table.csv','r',encoding='utf-8')as file:
lst=file.readlines()
for item in lst:
new_lst=item[:len(item)-1].split(',')
data.append(new_lst)
print(data)
if __name__ == '__main__':
# my_write()
# my_read()
# my_write_table()
my_read_table()
高维数据
json.dumps(obj):将Python数据类型转换成json格式过程,编码过程
json.loads(s):Json格式字符串转成Python数据类型解码过程。
json.dump(obj.file):与dumps()功能相同,将转换结果存储到文件file中
json.load(file):与loads()功能相同,从文件file中读入数据
import json
#准备高维数据
lst=[
{'name':'袁咏仪','age':24,'score':87},
{'name':'tom','age':34,'score':98},
{'name':'lily','age':36,'score':78}
]
s=json.dumps(lst,ensure_ascii=False,indent=4)#ensure_ascii正常显示中文,indent增加数据的缩进,美观用的
print(type(s))
print(s)
lst2=json.loads(s)
print(type(lst2))
print(lst2)
内置的与操作系统文件相关的模块,该模块中语句的执行结果通常与操作系统有关,即有些函数的运行效果在Windows操作系统中和mac os系统中不一样
getcwd():获取当前工作路径。
listdir(path):获取path路径下的文件和目录信息,如果没有指定path则获取当前路径下的文件和目录信息。
mkdir(path):在指定路径下创建目录或者文件夹。
makerdirs(path):创建多级目录。
rmdir(path):删除path下的空目录。
removedirs(path):删除多级目录
chdir(path):把path设置为当前目录
walk(path):遍历目录树结果为元组,包含所有路径名,所有目录列表和文件列表。
remove(path):删除path指定的文件
rename(old,new):将old重命名为new。
stat(path):获取path指定的文件信息。
startfile(path):启动path指定的文件。
abspath(path):获取目录或文件的绝对路径。
exists(path):判断目录或文件在磁盘上是否存在结果为布尔类型。如果目录或文件在磁盘上存在,结果为true,否则为false。
join(path,name):将目录与目录名或文件名进行拼接,相当于字符串的加操作。
splitext():分别获取文件名和后缀名。
basename(path):从path中提取文件名。
dirname(path):从path中提取路径不包含文件名。
isdir(path):判断path是否是有效路径。
isfile(path):判断file是否是有效文件。