day14 文件操作

day14 文件操作

一、导入原理:

  • 在导入模块的时候系统进入到模块中将模块中的全部代码执行一遍

  • 在这个if语句中的代码只会在直接执行当前模块的时候执行,在被别的模块导入的时候不会执行

if __name__ == '__main__':
    names=['哈利波特','夏目友人帐','红磨坊']

二、计算机数据存储:

1、计算机内存

  • 运行内存,硬盘
  • 运行内存存储数据以进程为单位,程序运行结束数据会被自动释放
  • 保存在硬盘中的数据一旦保存,除非手动删除或者硬盘损坏,否则一直存在

2、数据持久化

  • 也叫数据本地化,指的就是将程序中的数据保存在硬盘中,(数据默认保存在运行内存中)
  • 硬盘保存数据的单位是文件;如果想要把数据保存在硬盘中就需要把数据保存的文件中
  • 文件夹不具备保存数据的能力只是对文件进行归类

3、文件操作

  • 操作文件的基本步骤:

    打开文件 --> 操作文件内容(读操作、写操作) --> 关闭文件

三、打开文件

  • 语法:open(文件路径, 文件打开方式=‘r’, encoding=文本文件编码方式)

1、文件路径

  • 文件在计算机中的位置信息

    • 文件路径分为两种:绝对路径、相对路径(一般将要使用的文件放入项目中)

      • 绝对路径:文件在计算机中的全路径

      • 相对路径:

      • 注意:

        使用像对路径之前需要先将被操作的文件放在工程目录中,

        a. 在写路径的时候用.表示当前目录(当前写代码文件所在的目录所在的文件夹)
        b. 在写路径的时候用…表示当前文件的上层目录

# 绝对路径
path=r'D:\001.qianfeng\学习总结\day13模块、包、异常捕获.md'
open(path)
# 相对路径
path=r'.\file1\text.xtx'
open(path)

2、文件打开方式

  • 文件的打开方式决定了打开文件后能干什么(是能读还是能写)

  • 还决定操作文件的时候数据的类型(是字符串还是二进制)

    • 第一组值:r、w、a
      • r - 只读,如果文件不存会报错
      • w - 只写,打开的时候会先清空原文件,文件如果不存在程序不会报错,会创建一个文件
      • a - 只写,在原文件的后面写新的东西,不会清空原文件,文件如果不存在程序不会报错,会创建一个文件
    • 第二组值:t、b
      • t - 字符串类型(读到的数据、写入文件的数据必须是字符串)
      • b - 二进制类型(读到的数据、写入文件的数据必须是二进制)
  • 给打开方式赋值的时候必须在两组值中每一组选一个值,如果第二组值不选就默认 t

  • tr 、rb、wt、wb、at、ab(顺序可颠倒)

  • r - 只读

f=open(r'file1\text.xtx','r')
f.read()
f.write('abc')  # io.UnsupportedOperation: not writable
  • a - 只写,在原文件的后面写新的东西,不会清空原文件
f=open(r'file1\text.xtx','a')
# f.read()   # io.UnsupportedOperation: not readable
f.write('abcd')
  • w - 只写,打开的时候会先清空原文件
f=open(r'file1\text.xtx','w')
f.write('abc')
# f.read()  # io.UnsupportedOperation: not readable
open(r'file1\data.txt','w')

3、文件编码方式

  • 不同的文本文件编码方式在保存同一个符号的编码值符号不同

  • 常见的文本文件编码方式:utf-8(推荐)、gbk

    • utf-8: 数字字母采用一个字节保存,中文采用3个字节保存
    • gbk: 数字和字母采用一个直接保存,一个中文采用2个字节保存
  • 使用编码方式的要求

    前后一致(存储数据的时候采用的编码值,必须和获取的数据采用的编码值一致)

f=open(r'file1\text.xtx' ,'wt',encoding='utf-8')
print(f.write('hellow,世界'))  # 9写入内容的长度

f=open(r'file1\text.xtx' ,'rt',encoding='utf-8')
print(f.read())   # hellow,世界

#  python软件默认utf-8

四、操作文件

1、文件读操作(回去文件内容)

  • a.文件对象.read()

    • 获取整个文件内容(从读写位置(默认是文件开头)开始到文件结束)
  • b.文件对象.readline()

    • 从读写位置开始到一行结束,只针对文本文件有效
  • 注意:读操作会改变读写位置,

  • 文件对象.seek(0) - 将读写位置移动到文件开头

2、文件写操作

  • 包括增加内容、修改内容、删除内容
  • 文件对象.write(内容)
    • 将指定内容写入到指定文件中

3、关闭文件

  • 文件对象.close()
f=open(r'file1\text.xtx','rt',encoding='utf-8')
result=f.read()
print(result)  # 此时读写位置已经在文件结束的位置,如果再次读操作,不会有结果

f.seek(0)
print(f.readline())
print(f.readline())

五、应用

1、 数据持久化方法 -

  • 让这次运行程序产生的数据,可以在下一次程序运行的时候使用

    • 第一步:确定需要持久化的数据是什么
    • 第二步:创建文件确定文件初始内容
    • 第三步:做到在程序中需要这个数据的时候从文件中获取这个数据
    • 第四步:做到如果数据发生改变,必须将新的数据更新在文件中
  • 案例:写程序打印程序运行次数

f=open(r'file1\data.txt',encoding='utf-8')
count=int(f.read())
f.close()
# 让次数加1,
count+=1
# 打印次数
print(count)
# 更新文件内容
f=open(r'file1\data.txt','w',encoding='utf-8')
f.write(str(count))
  • 练习 输入学生名字,显示所有学生姓名
f=open(r'file1\Name.txt','a',encoding='utf-8')
# name='input('请输入一个姓名:')'
# f.write(f' {name}')
f.close()

f=open(r'file1\Name.txt','r',encoding='utf-8')
result=f.read()
print(result)
f.close()
  • 获取所有的学生信息
name=input('enter a name: ')
sex=input('enter sex: ')
age=input('enter age: ')
try:
    f=open(r'file1\StudentImformation',encoding='utf-8')
    all_student=eval(f.read())
    f.close()
except FileNotFoundError:
    all_student=[]

all_student.append({'name':name,'gender':sex,'age':age})

print(all_student)

f=open(r'file1\StudentImformation','w',encoding='utf-8')
f.write(str(all_student))
f.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值