文件操作

  • open() -- 打开

    • open通过Python控制操作系统打开文件

    • f=open('文件路径',mode='r',encoding='utf-8')

      • mode -- 不写就默认是r

    • f -- 文件句柄

  • file -- 文件位置

  • encoding -- 文件编码

r

  • print(f.read()) -- 全部读取

    • 文件只能读取一次

    • print(f.read(3)) -- 按照字符读取(读不到最后一位)

    • f.readline() -- 读取一行,默认尾部有一个\n

    • f.readlines() -- 一行一行读取,全部储存在列表中

  • 路径转义:

    • 都改成"\\"

    • 在路径开头加r

  • 路径:

    • 绝对路径:从磁盘(C盘)开始查找

    • 相对路径:相对于某个文件进行查找

rb
  • f=open('文件路径',mode='rb')

    • 字节操作时,不能指定encoding编码

    • f.read()

    • f.read(3) -- 按照字节读取

    • f.readline()

    • f.readlines()

  • r 和rb的区别:

    1. r需要指定encoding,rb不需要

    2. r中的read(3)按照字符读取,rb模式中按照字节读取

  • read 和 readlines 如果文件较大时,会出现内存溢出

    • 解决方案:文件较大时使用for循环

      • f=open('文件路径',mode='r',encoding='utf-8')
        for i in f:
           print(i.strip())   #面试题

w

  • ff=open('a1',mode='w',encoding='utf-8')
    ff.write('123')  #写的内容必须是字符串
    • 有文件就用当前文件,没有文件就创建一个文件

    • 写的内容必须是字符串

  • w操作:-- 清空写(写的是文本)

    • 先清空文件(打开文件时清空)

    • 写入内容

wb
  • 清空写(写字节)

  • ff=open('a1',mode='w')

a

  • 追加写

  • 有文件就用用当前文件,没有就创建一个文件

ab
  • 追加写字节

读写+操作

r+ 读写

  • f=open('b1',mode='r+',encoding='utf-8')

  • f=open('b1',mode='r+',encoding='utf-8')
    f.write('今天是周一')
    print(f.read()) #坑,只能先读后写

w+ 写读

  • f.seek() -- 移动光标

    • f=open('b1',mode='r+',encoding='utf-8')
      f.write('今天是周一')
      f.seek(0)
      print(f.read())

a+ 追加写、读

  • 坑:永远在末尾加,移动光标写内容还是在末尾追加

    • f=open('b1',mode='r+',encoding='utf-8')
      f.write('今天是周一')
      f.seek(0)
      f.write('啊啊啊啊')
      print(f.read())

其他操作

  • f.seek() -- 移动光标(光标是按照字节移动)

    • seek(0,0) -- 移动光标到文件头部

    • seek(0,1) -- 移动光标到当前位置

    • seek(0,2) -- 移动光标到文件末尾

  • f.tell() -- 查看光标(按照字节计算)

  • 修改文件:

    • import os #操作系统交互接口

  • 考点:

    1. 创建一个新的文件

    2. 读取旧的文件内容

    3. 进行替换修改

    4. 将修改的内容写入到新的文件中

    5. 将文件关闭

    6. 将文件名进行修改

    • 将文件中全部内容读取容易导致内存溢出

  • with open('a1','r',encoding='utf-8')as f:

    • 自动关闭文件

    • 同时操作多个文件

      • with open('a1','r',encoding='utf-8')as f,open('a2','r',encoding='utf-8')as f1:
        #上下文管理

文件操作目的

  1. 持久化:永久存储

Python之路Day08的更多相关文章

  1. 初学python之路-day08前期总结

    # 1# 计算机原理:控制器 运算器 存储器 input设备 output设备 IO流# 三大核心:CPU 内存 硬盘 # 内存分布:栈区 与 堆区# 如二进制与十进制的转换,如1111转成十进制为1 ...

  2. 初学python之路-day08

    #学习了编码后,还要了解三种字符串.# 一.# 普通字符串:u''以字符作为输出单位,# print(u'abc') # 用于显示abc# # 二进制字符串:b'' 二进制字符串以字节作为输出单位# ...

  3. Python之路【第一篇】python基础

    一.python开发 1.开发: 1)高级语言:python .Java .PHP. C#  Go ruby  c++  ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...

  4. Python之路

    Python学习之路 第一天   Python之路,Day1 - Python基础1介绍.基本语法.流程控制              第一天作业第二天   Python之路,Day2 - Pytho ...

  5. python之路 目录

    目录 python python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python 基础2 编码转换 pych ...

  6. Python之路【第十九篇】:爬虫

    Python之路[第十九篇]:爬虫   网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用 ...

  7. Python之路【第十八篇】:Web框架们

    Python之路[第十八篇]:Web框架们   Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...

  8. Python之路【第十七篇】:Django【进阶篇 】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

  9. Python之路【第十六篇】:Django【基础篇】

    Python之路[第十六篇]:Django[基础篇]   Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了O ...

随机推荐

  1. linux中的链接命令

    ln 解释 命令名称:ln 命令英文原意:link 命令所在路径:/bin/ln 执行权限:所有用户 功能描述:生成链接文件 语法 ln -s [源文件] [目标文件] -s 创建软链接 示例 # 创 ...

  2. sql对于表格中列的删改

    mysql与oracle char为定长字符串 var为可变字符串 修改表名:rename table1 to table2:(mysql) alter table1 rename to table2 ...

  3. mybatis 测试输出SQL语句到控制台配置

    1: mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  4. 【Java】模拟登录教务网并获取数据

    本文章仅做技术交流演示学习,请勿用于违法操作! 前期准备 首先我们需要到要模拟登录的网页,进行抓包操作. 使用Chrome浏览器打开系统的登录页面,按F12打开开发者工具 切换到Network选项卡 ...

  5. linux环境安装mysql

    安装虚拟机:  RedHat+CentOS 我说略会不会被打,哈哈,这个虚拟机的安装之后我再补上吧~~ 首先查看已经安装的mysql相关的包 rpm -qa | grep mysql 执行之后会出现以 ...

  6. MongoDB高可用架构集群管理(一)

    MongoDB数据库核心的两个特点:第一个特点是副本集的自动切换,保证数据的高可靠.服务的高可用:第二个特点是自动分片.服务的横向扩展能力. (一)副本集架构 MongoDB的副本集是一组保持相同数据 ...

  7. MQ日常命令

    假设队列管理器为QMgrName,以下所有使用QMgrName的地方您都可以替换成您维护的mq队列管理器名称. 一.MQ的启动与停止 用root用户启/停需要root用户包含在mqm组中. 1.MQ的 ...

  8. 前端开发神器 VSCode 使用总结

    VSCode 是微软出品的,基于 Electron 和 TypeScript 的,集成了 git 版本管理和命令行终端,而且开源稳定,插件丰富,再搭配一款 Chrome 浏览器,可以说是前端开发神器了 ...

  9. 证明task线程是来源于线程池的,线程重用

    1.线程池是单例的,全局唯一的,设置线程池最大活跃线程数是5,设置后,允许同时并发的Task只有5个,我们开启100个task去做任务,从最后的输出结果看到,虽然开启了100个task,但是线程id始 ...

  10. css字体样式+文本样式

    font-family属性值:具体字体名或者字体集 如果是中文或者有单词之间有空格,需要加双引号 字体集: Serif (有装饰线) Sans-serif (无装饰线) Monospace Cursi ...