文件操作

  • 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. pikachu-远程代码、命令执行漏洞(RCE)

    一.RCE概述 1.1 什么是RCE? RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 1.2 远程系统命令执行 一般出现这种漏洞,是因为应用系统从设计上需要 ...

  2. 使用Nginx对.NetCore站点进行反向代理

    前言 之前的博客我已经在Linux上部署好了.NetCore站点且通过Supervisor对站点进行了进程守护,同时也安装好了Nginx.Nginx的用处非常大,还是简单说下,它最大的功能就是方便我们 ...

  3. 现在连Linux都搞不懂,当初我要是这么学习操作系统就好了!

    原创声明 本文首发于微信公众号[程序员黄小斜] 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 本文思维导图 简介 学习编程,操作系统是你必须要掌握的基础知识,那么操作系统到底是什么呢? 这还 ...

  4. (好题)POJ3057

    二分+二分图匹配+BFS 题意: 墙壁“X”,空区域(都是人)“.”, 门“D”. 人向门移动通过时视为逃脱,门每秒能出去一个人,人可以上下左右移动,墙阻止移动. 求最优移动方案下,最后一个人逃脱的最 ...

  5. C#上位机之—WinForm实现Socket异步通讯示例

    工作中常用到的一些知识点,总是用完就忘,第一次尝试用博客记录下来,以备后用: Socket通讯,Socket(套接字)是基于TCP/IP通讯方式的封装好的类,调用时需要添加下面的服务引用: using ...

  6. console 打印消息时,可以使用 %c 指定随后的文本样式; %s 可引用参数变量。

    1.console.log 使用 加%c console.log('%c Merry Christmas!!', 'color:green;background:yellow;text-shadow: ...

  7. JAVA 线程池原理

    如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率.这就是线程池的目的了.线程池为线程生命周期的开销和资源不足问题提供了解决方案.通过对多个 ...

  8. redis缓存优化

    redis缓存优化 一.问题 在Javaweb项目中,如果每次刷新,所有资源都重新从数据库中读取,这样每次效率会很低,在这里可以使用redis非关系型数据库,将一些不经常变化得资源加载进内存中.提高效 ...

  9. 计蒜客 UCF 2015

    #A.Find the twins # 题意 找出每个序列是否有特定的值 # 题解 坑,原始序列输出的时候每一行最后一个不能有空格 #include<bits/stdc++.h> #def ...

  10. Elasticsearch集成IKAnalyzer分析器

    1. 查看标准分析器的分词结果            http://127.0.0.1:9200/_analyze?analyzer=standard&text=标准分析器 都分成了单个汉字, ...