谁能给我一个网站,泉州搜索推广,做动漫姓氏头像的网站,餐饮网站建设怎么建设的文章目录 文件的概述及基本操作步骤 p151文件的写入操作 p152文件的读取操作及文件复制 p153文件的读取操作文件复制 with语句的使用 p154一维数据和二维数据的存储与读取 p155高维数据的存储和读取 p156os模块中的常用的函数 p157os.path模块中常用的函数 p158 文件的概述及基… 文章目录 文件的概述及基本操作步骤 p151文件的写入操作 p152文件的读取操作及文件复制 p153文件的读取操作文件复制 with语句的使用 p154一维数据和二维数据的存储与读取 p155高维数据的存储和读取 p156os模块中的常用的函数 p157os.path模块中常用的函数 p158 文件的概述及基本操作步骤 p151
什么是文件
存储在计算机的存储设备中的一组数据序列就是文件
不同类型的文件通过后缀名进行区分文本文件编码格式不同所占磁盘空间的字节数不同比如北京你好用gbk编码是8个字节utf-8则需要编码为12个字节 二进制文件没有统一的编码文件直接由0或1组成需要指定的软件才能打开 Python操作文件的步骤
1、打开文件
变量名open(filename,mode,encoding)filename:要打开文件的完整路径
mode:文件的打开模式读还是写...
encoding:文件的编码格式若要打开的文件不存在则会在磁盘上创建文件2、操作文件
变量名.read()
变量名.write(s)3、关闭文件
变量名.close()代码实例
def my_write():# 1fileopen(a.txt,w,encodingutf-8) # 若欲打开文件和当前代码文件在同一目录直接写欲打开文件名就行以utf-8的格式编码# 2file.write(伟大的中国梦)# 3file.close()def my_read():# 1fileopen(a.txt, r, encodingutf-8)# 2sfile.read()# 3file.close()print(s)# 主程序运行似乎就是只有在当前文件中运行Python才会执行的分支
if __name____main__:my_write()my_read()
# 重复运行这个代码新产生的文件内容里面也只有一个伟大的中国梦文件的写入操作 p152
文件未被打开时磁盘存储状态 文件被打开后内存占用状态 文件的打开模式模式说明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(ooffset)改变当前文件操作指针的位置英文占一个字节中文gbk编码占两个字节utf-8编码占三个字节 代码实例
def my_write(s):fileopen(b.txt,a,encodingutf-8)file.write(s)file.write(\n)file.close()# 将列表中的内容写入文件
def my_write_lst(lst):fileopen(b.txt,a,encodingUTF-8)file.writelines(lst)file.close()if __name____main__:my_write(伟大的中国梦)my_write(北京欢迎您)lst[姓名\t,年龄\t,成绩\n,张三\t,30\t,98\n]my_write_lst(lst)文件的读取操作及文件复制 p153
文件的读取操作
def my_read(filename):fileopen(filename,w,encodingUTF-8)file.write(你好啊) # 写完成后文件的指针在最后# seek修改文件指针的位置file.seek(0) # 文件指针偏移设置为0最开始的地方# sfile.read() # read()不指定参数就是读取文件全部内容# sfile.read(2) # 读取两个字符不是字节你好# sfile.readline() # 读取一行的数据# sfile.readline(2) # 读取一行中的两个字符sfile.readlines() # 读取所有一行为列表中的一个元素s是列表类型print(type(s))print(s)if __name____main__:my_read(d.txt)文件复制
def copy(src,dst):# 文件的复制就是边读边写操作file_srcopen(src,rb)file_dstopen(dst,wb)sfile_src.read() # 源文件读取所有file_dst.write(s) # 目的文件写入所有# 先打开的后关后打开的先关file_dst.close()file_src.close()if __name____main__:src./图片.png # . 代表当前目录dst../test.pngcopy(src,dst)print(文件复制完成)with语句的使用 p154
with语句又称为上下文管理器在处理文件时无论是否产生异常都能保证with语句执行完毕后关闭已经打开的文件这个过程是自动的无需手动操作
语法结构
with open(...) as file:pass代码实例
def write_fun():with open(aa.txt,w,encodingUTF-8) as file:file.write(2022年北京冬奥会欢迎您)def read_fun():with open(aa.txt,r,encodingUTF-8) as file:print(file.read())def copy_fun(src_file,dst_file):with open(src_file,r,encodingUTF-8) as file_src:with open(dst_file,w,encodingUTF-8) as file_dst:file_dst.write(file_src.read())if __name____main__:write_fun()read_fun()copy_fun(./aa.txt,./bb.txt)一维数据和二维数据的存储与读取 p155
数据的组织维度 也称为数据的组织方式或存储方式在Pytho中常用的数据组织方式可以分为一维数据、二维数据和高维数据
一维数据通常采用线性方式组织数据一般使用Python中的列表、元组或集合进行存储数据不能使用字典
二维数据二维数据也称为表格数据由行和列组成类似于Excel表格在Python中使用二维列表进行存储
高维数据高维数据则是使用key-value方式进行组织数据在Python中使用字典进行存储数据。在Python中内置的json模块专门用于处理JSONJavaScript Object Notation格式的数据 代码实例
# 存储和读取一维数组
def my_write():# 一维数据可以使用列表元组或集合lst[张三,李四,王五,陈六,麻七]with open(student.csv,w,encodingUTF-8) as file: # 没写编码格式采用默认 GBK编码 会是乱码file.write(,.join(lst)) # 列表转成字符串的操作def my_read():with open(student.csv,r,encodingUTF-8) as file:sfile.read()lsts.split(,) # 劈分print(lst)# 存储和读取二维数据表格数据
def my_write_table():lst[[商品名称,单价,采购数量],[水杯,98.5,20],[鼠标, 89, 100],]with open(table.csv,w,encodingUTF-8) as file: # 虽然此处用了w但不是覆盖写怀疑和with open打开方式有关但是多次运行也不会往table.csv中重复写for item in lst:file.write(,.join(item))file.write(\n)def my_read_table():data[]with open(table.csv,r,encodingUTF-8) as file:lstfile.readlines() # 每一行就是列表中的一个元素for item in lst:new_lstitem[:len(item)-1].split(,)data.append(new_lst)print(data)if __name____main__:my_write()my_read()my_write_table()my_read_table()高维数据的存储和读取 p156
json模块的常用函数
函数名称描述说明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:tom,age:18,score:100},{name:jack,age:19,score:90},{name:lucy,age:17,score:80}
] # 若最外层变为元组边界loads解码后依然变成列表边界# dumps 编码:list--str
sjson.dumps(lst,ensure_asciiFalse,indent4) # ensure_asciiFalse为了正常显示中文indent4增加数据的缩进美观。使json格式的字符串更具有可读性
print(type(s)) # 编码:list--str
print(s)print(-*66)# loads 解码str--list
lst2json.loads(s)
print(type(lst2))
print(lst2)print(-*66)# 编码到文件中
with open(studeng.txt,w,encodingUTF-8) as file:json.dump(lst,file,ensure_asciiFalse,indent4) # ensure_asciiFalse,indent4 也要加上确保可读性print(-*66)# 解码到程序中
with open(studeng.txt,r,encodingUTF-8) as file:lst3json.load(file)
print(lst3)os模块中的常用的函数 p157
os使Python内置的与操作系统文件相关的模块该模块中语句的执行结果通常和操作系统有关即有些函数的运行效果在Windows操作系统和Macos操作系统中不一样 目录与文件的相关操作
函数名称描述说明getcwd()获取当前的工作路径listdir(path)获取path路径下的文件和目录信息 若没有指定path则获取当前路径下的文件和目录信息mkdir(path)在指定路径下创建目录文件夹makedirs(path)创建多级目录rmdir(path)删除path下的空目录目录下面有内容的删不了removedirs(path)删除多级目录chdir(path)把path设置为当前目录walk(path)遍历目录树结果为元组包含所有路径名所有目录列表和文件列表remove(path)删除path指定的文件rename(old,new)将old重命名为newstat(path)获取path指定的文件信息startfile(path)启动path指定的文件 代码实例
import osprint(当前的工作路径:,os.getcwd())print(-*66)lstos.listdir()
print(当面路径下的所有目录和文件:,lst)print(指定路径下的所有目录和文件:,os.listdir(../))print(-*66)# 创建单极目录
# os.mkdir(好好学习) # 若此目录已经存在则无法创建并且程序报错
# os.mkdir(mm)
# 创建单极目录
# os.makedirs(./好好学习/aa/bb/cc) # 若最下级目录cc已经存在则无法创建并且程序报错print(-*66)# 删除目录只能是空目录
# os.rmdir(./mm) # 若目录非空或者不存在那么此处会报错
# 删除多级目录
# os.removedirs(./好好学习/aa/bb/cc) # 同样要求目录是空的和目录存在print(-*66)# 改变当前的工作路径
print(当前的工作路径:,os.getcwd())
os.chdir(D:\pycharm_projects)
print(修改工作目录后当前的工作路径:,os.getcwd()) # 修改了程序运行的路径程序的路径没变
os.chdir(rD:\pycharm_projects\pythonProject\venv\chap_10) # 注意此处 \v成了转义字符所以搞成\\v ; 也可以在整个字串外面加个 ‘r 或者 ’R
print(恢复当前的工作路径:,os.getcwd())print(-*66)# 遍历目录树 打印太多注释掉for dirs,dirlist,filelist in os.walk(D:\pycharm_projects\pythonProject\\venv):print(dirs) # 当前遍历到的目录 Xprint(dirlist) # X下的目录print(filelist) # X下的文件print(*****)
print(-*66)# 删除文件
# os.remove(./a.txt) # 若文件不存在会报错 FileNotFoundError
# 重命名操作操作对象可以是文件也可以使目录
# os.rename(aa.txt,aa_new.txt) # 重命名文件
# os.rename(112,113) # 重命名目录print(-*66)# 转换时间格式
import timedef date_foramt(longtime): # 入参是时间戳stime.strftime(%Y-%m-%d %H:%M:%S,time.localtime(longtime))return s# 获取文件信息
infoos.stat(./aa_new.txt)
print(type(info)) # class os.stat_result
print(info)print(最近一次访问时间,date_foramt(info.st_atime))
print(在windows操作系统中显示的文件创建时间,date_foramt(info.st_ctime))
print(最后一次修改时间,date_foramt(info.st_mtime))
print(文件的大小单位是字节,info.st_size)print(-*66)# 启动路径下的文件
os.startfile(calc.exe) # 打开计算器
os.startfile(rC:\Users\j30022395\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python 3.8\Python 3.8 (64-bit)) # 打开Python解释器os.path模块中常用的函数 p158
os.path模块是os模块中的子模块也提供了一些目录和文件的操作函数
函数名称描述说明abspath(path)获取目录或文件的绝对路径从盘符开始exists(path)判断目录或文件在磁盘上是否存在结果为bool类型若目录或文件在磁盘上存在结果为True否则为Falsejoin(path,name)将目录与目录名或文件名进行拼接相当于字符串的 操作splitext()分别获取文件名和后缀名basename(path)从path中提取文件名dirname(path)从path 中提取路径不包含文件名isdir(path)判断path是否是有效路径isfile(path)判断path 是否是有效文件
import os.pathprint(获取目录或者文件的绝对路径,os.path.abspath(./note.txt)) # 实际不存在
print(判断目录或文件在磁盘上是否存在,os.path.exists(note.txt)) # False 当前路径下不存在这个文件
print(判断目录或文件在磁盘上是否存在,os.path.exists(1.txt)) # True 当前路径下存在这个文件
print(拼接路径,os.path.join(rE:\1_python\PyCharmProjects\chap3,note.txt))
print(分割/分别获取 文件名和文件后缀名,os.path.splitext(b.txt)) # 要切除的文件不一定要在当前目录下存在
print(提取文件名,os.path.basename(rE:\1_python\PyCharmProjects\chap3\note.txt))
print(提取文件名,os.path.basename(rE:\1_python\PyCharmProjects\chap3\note_1.txt)) # 文件实际不存在也能提取文件名
print(提取路径,os.path.dirname(rE:\1_python\PyCharmProjects\chap3\note.txt))
print(提取路径,os.path.dirname(rE:\1_python\PyCharmProjects\chap3_1\note.txt)) # 路径实际不存在也能提取
print(判断一个路径是否是有效路径,os.path.isdir(rE:\1_python\PyCharmProjects\chap3\note_1.txt)) # 文件不存在False
print(判断一个路径是否是有效路径,os.path.isdir(rE:\1_python\PyCharmProjects\chap3\note.txt)) # 文件存在也是False
print(判断一个路径是否是有效路径,os.path.isdir(rE:\1_python\PyCharmProjects\chap3))print(判断一个路径是否是有效文件,os.path.isfile(rE:\1_python\PyCharmProjects\chap3\1.txt))