Python中的文件操作

文件的读写操作

'''
文件概述
存储在计算机的存储设备中的一组数据序列的就是文件
不同类型的文件通过后缀名进行区分
文本文件:由于编码格式的不同,所占磁盘空间的字节数不同
二进制文件:没有统一的编码, 文件直接由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__':
    # my_write('伟大的中国梦')
    # my_write('北京欢迎您')
    # 准备数据
    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.read()
    # 读取2个字符
    # s=file.read(2)
    # 读取一行数据
    # s=file.readline()
    # 读取一行中的2个字符
    # s = file.readline(2)
    # 读取所有的行
    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'
    # new_path='../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:  # item的数据类型是列表
            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(',')  # 去除\n并根据","拆分
            lst.append(sub_list)
        print(lst)


if __name__ == '__main__':
    # my_write()
    # my_read()
    # my_write_table()
    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}
]
# 编码 list-str 列表中是字典
s= json.dumps(lst,ensure_ascii=False,indent=4)#ensure_ascii正常显示中文,indent:增加数据的缩进
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:/'))
#创建目录
# os.mkdir('test_mkdir')#如果要创建的文件夹已经存在,则程序报错FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'test_mkdir'
#创建多级目录
# os.makedirs('./test_makedirs/aa/bb/cc')#如果要创建的文件夹已经存在,则程序报错FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: './test_makedirs/aa/bb/cc'
#删除目录
# os.rmdir('./test_mkdir')#如果要创建的文件夹已经删除或不存在,则报错FileNotFoundError: [WinError 2] 系统找不到指定的文件。: './test_mkdir'
#删多级目录
# os.removedirs('./test_makedirs/aa/bb/cc'))#如果要创建的文件夹已经删除或不存在,则报错FileNotFoundError: [WinError 3] 系统找不到指定的路径。: './test_makedirs/aa/bb/cc'
#改变当前的工作路径
print('修改当前工作路径前 当前的工作路径',os.getcwd())
os.chdir('D:/')
print('修改当前工作路径后,当前的工作路径',os.getcwd())
print('=='*60)
#遍历目录树os.walk 类似递归操作
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
# 删除文件
# os.remove('./a.txt')#如果文件不存在或已被删除,则抛出异常FileNotFoundError: [WinError 2] 系统找不到指定的文件。: './a.txt'
# 文件重命名
# os.rename('aa.txt','new_aa.txt')#如果文件不存在则抛出异常FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'aa.txt' -> 'new_aa.txt'
# 获取指定文件信息
# 转换时间格式
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)  # <class 'os.stat_result'> os.stat_result(st_mode=33206, st_ino=8444249302074454, st_dev=852268954, st_nlink=1, st_uid=0, st_gid=0, st_size=2029, st_atime=1719223711, st_mtime=1719223711, st_ctime=1719223284)
print('最后一次访问时间:', date_format(info.st_atime))
print('在windows操作系统中现实的文件创建时间:', date_format(info.st_ctime))
print('最后一次修改时间:', date_format(info.st_mtime))
print('文件的大小(单位是字节):', info.st_size)
# 启动指定文件
# os.startfile('D:\PycharmProjects\PYDemoProject\pythonProject\chap11\实例11-1 文件的读写操作.py')

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'))  # D:\PycharmProjects\PYDemoProject\pythonProject\chap11\a.txt
print('exists(path):           判断目录或文件在磁盘上是否存在', op.exists('./a.txt'))  # True
print('exists(path):           判断目录或文件在磁盘上是否存在', op.exists('./aaa.txt'))  # False
print('exists(path):           判断目录或文件在磁盘上是否存在', op.exists('./image'))  # True
print('exists(path):           判断目录或文件在磁盘上是否存在', op.exists('./imagexx'))  # False
print('join(path,name):        将目录与目录名或文件名进行拼接', op.join('./image','test.txt'))  # ./image\test.txt
print('splitext():         分别获取文件名和后缀名', op.splitext('a.txt'))  # ('a', '.txt')
print('basename(path):         从path中提取文件名', op.basename('./a.txt'))  #a.txt
print('dirname(path):         从path中提取路径(不包含文件名)', op.dirname('D:\PycharmProjects\PYDemoProject\pythonProject\image\chap11\实例11-6 一维数据和二维数据的存储.py'))  #D:\PycharmProjects\PYDemoProject\pythonProject\image\chap11
print('isdir(path):         判断path是否是有效路径', op.isdir('./image'))  #True
print('isfile(path):         判断path是否是有效文件', op.isfile('./a.txt'))  #True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值