文件的读写操作
'''
文件概述
存储在计算机的存储设备中的一组数据序列的就是文件
不同类型的文件通过后缀名进行区分
文本文件:由于编码格式的不同,所占磁盘空间的字节数不同
二进制文件:没有统一的编码, 文件直接由0或1组成,需要使用指定的软件才能打开
文件的基本操作
Python操作文件的步骤
1.打开文件: 变量名=open(filename,mode,encoding)
2.操作文件: 变量名.read() 变量名.write(s)
3.关闭文件: 变量名.close()
'''
def my_write():
file = open('a.txt','w',encoding='utf-8')
file.write('伟大的中国梦')
file.close()
def my_read():
file = open('a.txt', 'r', encoding='utf-8')
s=file.read()
print(type(s),s)
file.close()
if __name__ == '__main__':
my_write()
my_read()
'''
文件的状态和操作过程
(1)打开文件 (2)操作文件
file=open(...) Python程序
------------------>
(磁盘) (内存) --------> file.write(...)
文件操作
存储状态 占用状态 --------> file.read()
<-----------------
(3)关闭文件
file.close()
文件的打开模式
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编码占三个字节
'''
文件的写入操作
'''
文件概述
存储在计算机的存储设备中的一组数据序列的就是文件
不同类型的文件通过后缀名进行区分
文本文件:由于编码格式的不同,所占磁盘空间的字节数不同
二进制文件:没有统一的编码, 文件直接由0或1组成,需要使用指定的软件才能打开
文件的基本操作
Python操作文件的步骤
1.打开文件: 变量名=open(filename,mode,encoding)
2.操作文件: 变量名.read() 变量名.write(s)
3.关闭文件: 变量名.close()
文件的状态和操作过程
(1)打开文件 (2)操作文件
file=open(...) Python程序
------------------>
(磁盘) (内存) --------> file.write(...)
文件操作
存储状态 占用状态 --------> file.read()
<-----------------
(3)关闭文件
file.close()
文件的打开模式
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_write(s):
file = open('b.txt', 'a', encoding='utf-8')
file.write(s)
file.write('\n')
file.close()
def my_write_list(file, lst):
f = open(file, 'a', encoding='utf-8')
f.writelines(lst)
f.close()
if __name__ == '__main__':
lst = ['姓名\t', '年龄\t', '成绩\n', '张三\t', '30\t', '98']
my_write_list('c.txt', lst)
文件的读取操作
'''
文件概述
存储在计算机的存储设备中的一组数据序列的就是文件
不同类型的文件通过后缀名进行区分
文本文件:由于编码格式的不同,所占磁盘空间的字节数不同
二进制文件:没有统一的编码, 文件直接由0或1组成,需要使用指定的软件才能打开
文件的基本操作
Python操作文件的步骤
1.打开文件: 变量名=open(filename,mode,encoding)
2.操作文件: 变量名.read() 变量名.write(s)
3.关闭文件: 变量名.close()
文件的状态和操作过程
(1)打开文件 (2)操作文件
file=open(...) Python程序
------------------>
(磁盘) (内存) --------> file.write(...)
文件操作
存储状态 占用状态 --------> file.read()
<-----------------
(3)关闭文件
file.close()
文件的打开模式
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):
file = open(filename, 'w+', encoding='utf-8')
file.write('你好啊\n')
file.write('你好啊')
file.seek(0)
s=file.readlines()
print(type(s), s)
file.seek(3)
s=file.read()
print(type(s), s)
file.close()
if __name__ == '__main__':
my_read('d.txt')
文件的复制操作
'''
文件概述
存储在计算机的存储设备中的一组数据序列的就是文件
不同类型的文件通过后缀名进行区分
文本文件:由于编码格式的不同,所占磁盘空间的字节数不同
二进制文件:没有统一的编码, 文件直接由0或1组成,需要使用指定的软件才能打开
文件的基本操作
Python操作文件的步骤
1.打开文件: 变量名=open(filename,mode,encoding)
2.操作文件: 变量名.read() 变量名.write(s)
3.关闭文件: 变量名.close()
文件的状态和操作过程
(1)打开文件 (2)操作文件
file=open(...) Python程序
------------------>
(磁盘) (内存) --------> file.write(...)
文件操作
存储状态 占用状态 --------> file.read()
<-----------------
(3)关闭文件
file.close()
文件的打开模式
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 copy(src, new_path):
src_file = open(src, 'rb')
new_file = open(new_path, 'wb')
s = src_file.read()
new_file.write(s)
new_file.close()
src_file.close()
if __name__ == '__main__':
src = './test.jpg'
new_path = './image/new_test.jpg'
copy(src, new_path)
print('文件复制结束')
with语句
'''
文件概述
存储在计算机的存储设备中的一组数据序列的就是文件
不同类型的文件通过后缀名进行区分
文本文件:由于编码格式的不同,所占磁盘空间的字节数不同
二进制文件:没有统一的编码, 文件直接由0或1组成,需要使用指定的软件才能打开
文件的基本操作
Python操作文件的步骤
1.打开文件: 变量名=open(filename,mode,encoding)
2.操作文件: 变量名.read() 变量名.write(s)
3.关闭文件: 变量名.close()
文件的状态和操作过程
(1)打开文件 (2)操作文件
file=open(...) Python程序
------------------>
(磁盘) (内存) --------> file.write(...)
文件操作
存储状态 占用状态 --------> file.read()
<-----------------
(3)关闭文件
file.close()
文件的打开模式
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编码占三个字节
with 语句:又成上下文管理器,在处理文件时,无论是否产生异常,都能保证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(src_file, target_file):
with open(src_file, 'r', encoding='utf-8') as file:
with open(target_file, 'w', encoding='utf-8') as file2:
file2.write(file.read())
if __name__ == '__main__':
write_fun()
read_fun()
copy('./aa.txt', './bb.txt')
一维数据和二维数据的存储
'''
数组的组织维度及存储
数据的组织维度:也称为数据的租出方式或存储方式,在Python中常用的数据组织方式可分为一维数据,二维数据,和高维数据
一维数据:通常采用线性方式组织数据,一般使用Python中的列表,元组或这集合进行存储数据
二维数据:也称表格数据,由行和列组成,类似于Excel表格,在Python中使用二维列表进行存储
高维数据:高维数据则是使用Key-Value方式进行组织数据,在Python中使用字典进行存储数据.在Python中内置的json模块专门用于处理JSON(JavaScript Object Notation)格式的数据
json模块的常用函数
函数名称: 描述说明
json.dumps(obj): 将Python数据类型转成JSON格式过程,编码过程
json.loads(s): 将JSON格式字符串转成Python数据类型,解码过程
json.dump(onj,file): 与dumps()功能相同,将转换结果存储到文件file中
json.load(file): 与loads()功能相同,从文件file中读取数据
'''
def my_write():
lst = ['张三', '李四', '王五', '陈六', '老七']
with open('student.csv', 'w') as file:
file.write(','.join(lst))
def my_read():
with open('student.csv', 'r') as file:
s = file.read()
lst = s.split(',')
print(lst)
def my_write_table():
lst = [
['商品名称', '单价', '采购数量'],
['水杯', '98.5', '20'],
['鼠标', '100.5', '200']
]
with open('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():
lst = []
with open('table.csv', 'r', encoding='utf-8') as file:
row_lst = file.readlines()
for item in row_lst:
sub_list = item[:len(item) - 1].split(',')
lst.append(sub_list)
print(lst)
if __name__ == '__main__':
my_read_table()
高维数据的存储
'''
数组的组织维度及存储
数据的组织维度:也称为数据的租出方式或存储方式,在Python中常用的数据组织方式可分为一维数据,二维数据,和高维数据
一维数据:通常采用线性方式组织数据,一般使用Python中的列表,元组或这集合进行存储数据
二维数据:也称表格数据,由行和列组成,类似于Excel表格,在Python中使用二维列表进行存储
高维数据:高维数据则是使用Key-Value方式进行组织数据,在Python中使用字典进行存储数据.在Python中内置的json模块专门用于处理JSON(JavaScript Object Notation)格式的数据
json模块的常用函数
函数名称: 描述说明
json.dumps(obj): 将Python数据类型转成JSON格式过程,编码过程
json.loads(s): 将JSON格式字符串转成Python数据类型,解码过程
json.dump(onj,file): 与dumps()功能相同,将转换结果存储到文件file中
json.load(file): 与loads()功能相同,从文件file中读取数据
'''
import json
lst = [
{'name': '张三', 'age': 19, 'score': 98},
{'name': '李四', 'age': 20, 'score': 50},
{'name': '王五', 'age': 18, 'score': 100}
]
s= json.dumps(lst,ensure_ascii=False,indent=4)
print(type(s),s)
lst2 = json.loads(s)
print(type(lst2),lst2)
with open('student.txt','w') as file:
json.dump(lst,file,ensure_ascii=False,indent=4)
with open('student.txt','r') as file:
lst3 = json.load(file)
print(type(lst3),lst3)
OS模块的使用
'''
目录与文件的相关操作
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重命名为new
stat(path): 获取path指定的文件信息
startfile(path): 启动path指定的文件
'''
import os
print('getcwd():获取当前的工作路径',os.getcwd())
lst=os.listdir()
print('listdir():获取当前路径下的文件和目录信息',lst)
print('listdir(path):获取指定路径下的文件和目录信息',os.listdir('D:/'))
print('修改当前工作路径前 当前的工作路径',os.getcwd())
os.chdir('D:/')
print('修改当前工作路径后,当前的工作路径',os.getcwd())
print('=='*60)
for dirs,dirlst,filelist in os.walk('D:\PycharmProjects\PYDemoProject\pythonProject\chap11'):
print('===================dirs===============================')
print(dirs)
print('===================dirlst===============================')
print(dirlst)
print('===================filelist===============================')
print(filelist)
OS模块的高级操作
'''
目录与文件的相关操作
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重命名为new
stat(path): 获取path指定的文件信息
startfile(path): 启动path指定的文件
'''
import os
import time
def date_format(longtime):
s = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(longtime))
return s
info = os.stat('D:\PycharmProjects\PYDemoProject\pythonProject\chap11\实例11-9 OS模块的高级操作.py')
print(type(info),
info)
print('最后一次访问时间:', date_format(info.st_atime))
print('在windows操作系统中现实的文件创建时间:', date_format(info.st_ctime))
print('最后一次修改时间:', date_format(info.st_mtime))
print('文件的大小(单位是字节):', info.st_size)
os.path模块的使用
'''
目录与文件的相关操作
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重命名为new
stat(path): 获取path指定的文件信息
startfile(path): 启动path指定的文件
os.path模块:是os模块的子模块,也提供了一些目录或文件的操作函数
函数名称: 描述说明
abspath(path): 获取目录或文件的绝对路径
exists(path): 判断目录或文件在磁盘上是否存在,结果为bool类型,如果目录或文件在磁盘上存在,结果为Ture,否则为False
join(path,name): 将目录与目录名或文件名进行拼接,相当于字符的"+"操作
splitext(): 分别获取文件名和后缀名
basename(path): 从path中提取文件名
dirname(path): 从path中提取路径(不包含文件名)
isdir(path): 判断path是否是有效路径
isfile(path): 判断file是否是有效文件
'''
import os.path as op
print('abspath(path): 获取目录或文件的绝对路径',
op.abspath('./a.txt'))
print('exists(path): 判断目录或文件在磁盘上是否存在', op.exists('./a.txt'))
print('exists(path): 判断目录或文件在磁盘上是否存在', op.exists('./aaa.txt'))
print('exists(path): 判断目录或文件在磁盘上是否存在', op.exists('./image'))
print('exists(path): 判断目录或文件在磁盘上是否存在', op.exists('./imagexx'))
print('join(path,name): 将目录与目录名或文件名进行拼接', op.join('./image','test.txt'))
print('splitext(): 分别获取文件名和后缀名', op.splitext('a.txt'))
print('basename(path): 从path中提取文件名', op.basename('./a.txt'))
print('dirname(path): 从path中提取路径(不包含文件名)', op.dirname('D:\PycharmProjects\PYDemoProject\pythonProject\image\chap11\实例11-6 一维数据和二维数据的存储.py'))
print('isdir(path): 判断path是否是有效路径', op.isdir('./image'))
print('isfile(path): 判断path是否是有效文件', op.isfile('./a.txt'))