文件及IO操作

文件

  • 存储在计算机的存储设备中的一组数据序列就是文件
  • 不同类型的文件通过后缀名进行区分

文本文件:由于编码格式的不同,所占磁盘空间的字节数不同

二进制文件:没有统一的编码文件直接由零或一组成,需要使用指定的软件才能打开。

Python操作文件的步骤

  1. 打开文件

        变量名=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语句执行完毕后关闭已经打开的文件,这个过程是自动的,无需手动操作

语法结构

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)

OS

内置的与操作系统文件相关的模块,该模块中语句的执行结果通常与操作系统有关,即有些函数的运行效果在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是否是有效文件。

你可能感兴趣的:(python)