第11章 1 文件及IO操作

发布时间:2024年01月12日

文件的概述及基本操作步骤 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():
    # 1
    file=open('a.txt','w',encoding='utf-8') # 若欲打开文件和当前代码文件在同一目录,直接写欲打开文件名就行;以utf-8的格式编码
    # 2
    file.write('伟大的中国梦')
    # 3
    file.close()

def my_read():
    # 1
    file=open('a.txt', 'r', encoding='utf-8')
    # 2
    s=file.read()
    # 3
    file.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):
    file=open('b.txt','a',encoding='utf-8')
    file.write(s)
    file.write('\n')
    file.close()

# 将列表中的内容写入文件
def my_write_lst(lst):
    file=open('b.txt','a',encoding='UTF-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):
    file=open(filename,'w+',encoding='UTF-8')
    file.write('你好啊') # 写完成后,文件的指针在最后
    # seek修改文件指针的位置
    file.seek(0) # 文件指针偏移设置为0,最开始的地方

    # s=file.read() # read()不指定参数就是读取文件全部内容;
    # s=file.read(2) # 读取两个字符(不是字节),你好
    # s=file.readline() # 读取一行的数据
    # s=file.readline(2) # 读取一行中的两个字符
    s=file.readlines() # 读取所有,一行为列表中的一个元素,s是列表类型
    print(type(s))
    print(s)

if __name__=='__main__':
    my_read('d.txt')

文件复制

def copy(src,dst):
    # 文件的复制就是边读边写操作
    file_src=open(src,'rb')
    file_dst=open(dst,'wb')

    s=file_src.read() # 源文件读取所有
    file_dst.write(s) # 目的文件写入所有

    # 先打开的后关,后打开的先关
    file_dst.close()
    file_src.close()


if __name__=='__main__':
    src='./图片.png' # . 代表当前目录
    dst='../test.png'
    copy(src,dst)
    print('文件复制完成')
文章来源:https://blog.csdn.net/engineer0/article/details/135545143
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。