python全栈开发 * 08知识点汇总 * 180608
08知识点梳理 文件操作
一 .文件操作 r (只读)
1.r (读) rb(字节)
f=open("果蔬大杂烩",mode="r",encoding="UTF-8")
content=f.read()
print(content) 2.rb(字节) MP3 图像 视频
f=open("果蔬大杂烩",mode="rb")
content=f.read()
print(content)
#绝对路径: 从磁盘根⽬录开始⼀直到⽂件名. ( "d:/**/b**/") or ("http:/**/**/")
#相对路径: :同⼀个⽂件夹下的⽂件. 相对于当前这个程序所在的⽂件夹⽽⾔. 如果在同⼀个⽂件夹中. 则相对路径就是这个⽂件名("f/**/**/").
# 如果在上⼀层⽂件夹. 则要("../**/**/")
3.读取文件的方法( 五种)
方法一 read() 文件中的内容全部读取.
f=open("果蔬大杂烩",mode="r",encoding="UTF-8")
content=f.read()
print(content)
f.close()
方法二 read(n) 读取n个字符 read(n) 读取n个字符. 需要注意的是. 如果再次读取. 那么会在当前位置继续去读⽽不
#是从头读, 如果使⽤的是rb模式. 则读取出来的是n个字节
f=open("果蔬大杂烩",mode="r",encoding="UTF-8")
content=f.read(7)
print(content)
f.close()
f=open("果蔬大杂烩",mode="rb")
content=f.read(3)
print(content)
f.close()
方法三 readline() ⼀次读取⼀⾏数据, 注意: readline()结尾, 注意每次读取出来的数据都会有⼀
#个\n 所以呢. 需要我们使⽤strip()⽅法来去掉\n或者空格
f=open("果蔬大杂烩",mode="r",encoding="UTF-8")
content=f.readline()
print(content.strip())
f.close()
方法四 readlines() readlines()将每⼀⾏形成⼀个元素, 放到⼀个列表中. 将所有的内容都读取出来. 所以
#也是. 容易出现内存崩溃的问题.不推荐使⽤
f=open("果蔬大杂烩",mode="r",encoding="UTF-8")
lst=f.readlines()
for line in lst:
print(line)
f.close()
方法五 循环读取 这种⽅式是组好的. 每次读取⼀⾏内容.不会产⽣内存溢出的问题
f=open("果蔬大杂烩",mode="r",encoding="UTF-8")
for line in f:
print(line)
f.close()
# 比较
# print("刘德华") 各输出各的
# print("周润发") 各输出各的
# print("刘德华",end="")
# print("周润发") 输出"刘德华周润发"
二 .文件操作 w (写文件)
1.w (写文件)
f=open("歌单",mode="w",encoding="UTF-8")
f.write("开始懂了")
f.write("我怀念的\n")
f.write("逆光")
f.write("绿光")
f.flush()
f.close()
2. wb (字符)
f=open("菜单",mode="wb")
f.write("烤全羊".encode("UTF-8"))
f.write("满汉全席".encode("UTF-8"))
f.write("北京烤鸭".encode("UTF-8"))
f.flush()
f.close()
三 .文件操作 a (追加)
1. a (追加)
f=open("歌单",mode="a",encoding="UTF-8")
f.write("寓言")
f.write("阿刁\n")
f.write("欧若拉")
f.flush()
f.close()
2. ab (字节)
f=open("歌单",mode="ab")
f.write("隐形的翅膀".encode("UTF-8"))
f.write("亲爱的这不是爱情".encode("UTF-8"))
f.flush()
f.close()
四 文件操作 r+ (读写) 先读后写
f=open("果蔬大杂烩",mode="r+",encoding="UTF-8")
content=f.read()
print(content)
f.write("奇异果")
f.flush()
f.close()
五 文件操作 w+ (写读) 先清空,再写入,最后读取 结果是空
f=open("歌单",mode="w+",encoding="UTF-8")
f.write("红豆")
f.write("流年")
content=f.read()
print(content)
f.close()
六 .文件操作 a+ (追加读) 不论先读后读 都读不到数据.
f=open("歌单",mode="a+",encoding="UTF-8")
content=f.read()
f.write("七里香")
print(content)
七 其他相关操作 seek(n) ; tell() ;truncate() .
1 .seek(n)光标移到 n 位置
# 移动的单位是byte. 所以如果是UTF-8的中⽂部分要是3的倍数.,
# 移到开头seek(0); 移动到结尾: seek(0,2)
# # (seek的第⼆个参数表⽰的是从哪个位置进⾏偏移, 默认是0 表⽰开头, 1 表⽰当前位置, 2 表⽰结尾. 第一个参数表示偏移量).
f=open("果蔬大杂烩",mode="r+",encoding="UTF-8")
f.seek(0)
content=f.read()
print(content)
f.seek(0,2)
content=f.read()
print(content)
2. tell(_) 获取当前光标在什么位置
f=open("果蔬大杂烩",mode="r+",encoding="UTF-8")
f.read(5)
print(f.tell())
# 结果显示光标在15.(第五个字后面)
3. truncate() 截断文件 .
根据光标位置保留前面的内容,删除后面的内容.
#如果truncate()给了参数,和光标没关系,将文件从头到参数之间的内容保留.
f=open("歌单",mode="r+",encoding="UTF-8")
content=f.read(3)
f.seek(3)
f.truncate()
print(content)
# 深坑请注意: 在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显⽰的是多少. 再写入
#或者操作⽂件的时候都是在结尾进⾏的操作.
八 修改文件 with for循环
1.with
import os
with open("五行",mode="r",encoding="UTF-8") as f1,\
open("五行_new",mode="w",encoding="UTF-8")as f2:
content=f1.read()
new_content=content.replace("金","银")
f2.write(new_content)
os.remove("五行")
os.rename("五行_new","五行")
2. for 循环
import os
with open("五行",mode="r",encoding="UTF-8") as f1,\
open("五行_new",mode="w",encoding="UTF-8")as f2:
for line in f1:
new_line=line.replace("金","银")
f2.write(new_line)
os.remove("五行")
os.rename("五行_new","五行")
python全栈开发 * 08知识点汇总 * 180608的更多相关文章
- python全栈开发 * 10知识点汇总 * 180612
10 函数进阶 知识点汇总 一.动态参数 形参的第三种1.动态接收位置传参 表达:*args (在参数位置编写 * 表⽰接收任意内容) (1)动态位置参数def eat(*args): print(a ...
- python全栈开发 * 01知识点汇总 * 180530
一 python简介. 1.创始人: 吉多 .范罗苏姆 \ (Guido van Rossum). 2.时间 : 1989年. 3.主要应用领域 : 云计算 \ WEB开发 \ ...
- python全栈开发 * 32知识点汇总 * 180717
32 网络编程 (一)一.架构 定义:程序员开发的一种模式. 分类: C/S 架构 C/S即:Client与Server , 客户端/ 服务器模式 . 缺点 : 冗余 B/S 架构 Browser与S ...
- python全栈开发 * 27知识点汇总 * 180710
27 time os sys 模块 time 模块 一.表示时间的三种方式 时间戳(timestamp), 元组(struct_time),格式化时间字符串(Format string) 小 ...
- python全栈开发 * 26知识点汇总 * 180709
26 logging collections random 模块 一.logging低配:日志不能写入文件与显示同时进行 import logging logging.basicConfig(leve ...
- python全栈开发 * 12 知识点汇总 * 180530
12 知识点总结 装饰器进阶 ⼀. 通⽤装饰器的回顾1.开闭原则: 对增加功能开放. 对修改代码封闭2.装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能3.通⽤装饰器的写法:def wrap ...
- python全栈开发 * 36知识点汇总 * 180721
36 操作系统的发展史 进程一.手工操作--穿孔卡片 1.内容: 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制 台开关启动程序针对 ...
- python全栈开发 * 31知识点汇总 * 180716
31 模块和包一.模块(一)模块的种类:内置模块,自定义模块,扩展模块第三方模块(二)自定义模块 1.模块的创建 : 新建一个py文件. 2.模块名 : 模块名需要符合变量的命名规范. 3.模块的导入 ...
- python全栈开发 * 24 知识点汇总 * 180705
24 模块-------序列化一.什么是模块 模块:py文件就是一个模块.二.模块的分类:(1)内置模块 (登录模块,时间模块,sys模块,os模块)(2)扩展模块 (itchat 微信有关,爬虫,b ...
随机推荐
- Git删除本地分支和远程分支
https://blog.csdn.net/sub_lele/article/details/52289996 git branch help λ git branch -h usage: git b ...
- 使用 Python 将 HTML 转成 PDF
背景 很多人应该经常遇到在网上看到好的学习教程和资料但却没有电子档的,心里顿时痒痒, 下述指导一下大家,如何将网站上的各类教程转换成 PDF 电子书. 关键核心 主要使用的是wkhtmltopdf的P ...
- centos 环境搭建jenkins服务
1.下载jenkins war包 https://jenkins.io/download/ 选择Generic Java package (.war)下载2.下载apache tomcat 8 htt ...
- Netty学习(八)-Netty的心跳机制
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a953713428/article/details/69378412我们知道在TCP长连接或者Web ...
- Android设备真实DPI与系统标示DPI——ldpi/mdpi/hdpi/xhdpi/xxhdpi/xxxhdpi
1.设备真实DPI与系统标示DPI 2.drawable允许的标示DPI值 drawable文件的合法名称如下: 3.如何验证 Demo如下,建立不同dpi的drawa ...
- RDLC 根据条件改变背景颜色-多个IIF
=IIf(Fields!DATE_DIFF.Value < 5 ,"White",IIf(Fields!DATE_DIFF.Value >=5 AND Fields!D ...
- C语言 · 8皇后问题改编
8皇后问题(改编) 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋盘. 输出格式 所能得到的最大数字和 样例输入 1 2 3 4 5 ...
- netty 的 JBoss Marshalling 编码解码
一. JBoss Marshalling 简介. JBoss Marshalling 是一个Java 对象序列化包,对 JDK 默认的序列化框架进行了优化,但又保持跟 Java.io.Serializ ...
- Goland常用快捷键
文件相关快捷键: CTRL+E,打开最近浏览过的文件. CTRL+SHIFT+E,打开最近更改的文件. CTRL+N,可以快速打开struct结构体. CTRL+SHIFT+N,可以快速打开文件. 代 ...
- SpirngBoot之整合Swagger2
前言 swagger,中文"拽"的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅, 而且还提供了在线文档的测试.另外swagger很容易构建rest ...