文件操作

  • 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. [WPF 学习] 3.用户控件库使用资源字典的困惑

    项目需要(或者前后端分离的需要),前端我使用了用户控件库,由后端用代码加载和控制. 然而用户控件库没法指定资源字典,于是在用户控件的xaml文件里面手工添加了资源字典 <UserControl. ...

  2. Python3标准库:weakref对象的非永久引用

    1. weakref对象的非永久引用 weakref模块支持对象的弱引用.正常的引用会增加对象的引用数,并避免它被垃圾回收.但结果并不总是如期望中的那样,比如有时可能会出现一个循环引用,或者有时需要内 ...

  3. Git安装配置及第一次上传项目到GitHub

    平时的学习工作少不了保存自己的Code到代码库,这里必须要使用到Git与GitHub. 1.   关于Git的安装 下载Git:下载地址:https://git-scm.com/downloads  ...

  4. 静态随机存储器SRAM存储数据原理

    RAM主要的作用就是存储代码和数据供中央处理器在需要的时候进行调用.对于RAM等存储器来说仍是一样的,虽然存储的都是代表0和1的代码,但是不同的组合就是不同的数据.对于RAM存储器而言数据总线是用来传 ...

  5. 洛谷P3719 [AHOI2017初中组]rexp

    洛谷P3719 [AHOI2017初中组]rexp 题目背景 以下为不影响题意的简化版题目. 题目描述 给出一个由(,),|,a组成的序列,求化简后有多少个a. 化简规则: 1.形如aa...a|aa ...

  6. Python中关于日期的计算总结

    1.获取当前时间的两种方法: 代码如下: import datetime,timenow = time.strftime("%Y-%m-%d %H:%M:%S")print now ...

  7. 浏览器对象模型“BOM”-- window对象

    global对象 全局对象 所有的全局变量和全局方法,都可以归在window上 <!DOCTYPE html> <html lang="en"> <h ...

  8. day9 修改文件

    # 修改文件 # 文件是不能修改 with open('小护士班主任', mode='r', encoding='utf-') as f, open('小护士班主任.bak', 'w', encodi ...

  9. 在IE8的基础上安装IE11

    安装包下载 链接:https://pan.baidu.com/s/1WAuyMg_SrfVa0wLjoop5Jw   提取码:nh1r 安装方式 先运行 - EIE11_ZH-CN_WOL_WIN76 ...

  10. 修改Linux中ssh协议中的默认端口号22

    说明:最近的一台服务器老是提示异常登录.主要原因是你的账户和密码可能太简单了,别人用默认的端口22进行登录. 打开SSH端口所在文件 vim /etc/ssh/sshd_config 进入编辑模式,将 ...