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 ...
随机推荐
- 移动应用开发技术选型:WebApp>HybridApp>NativeApp
一:概念辨析 Web App:生存在浏览器里的应用,只能运行在浏览器里,宿主是浏览器,不是操作系统.资源一般都在网络上,就是一个触屏版的网站.如:微信公众号.不需要在设备上下载安装,只需通过浏览器即可 ...
- Docker在windows下的使用【一】
1.windows按照docker的基本要求 (1)64为操作系统,win7或者更高 (2)支持“ Hardware Virtualization Technology”,并且,“virtualiza ...
- dagger2 重点笔记
官方架构例子,里面有个dagger2的结合的例子 https://github.com/googlesamples/android-architecture https://google.github ...
- 好用好玩的Python包
ujson 用C++实现的json解析器,速度飞快. prettytable 在控制台下使用表格展示数据 import prettytable t=prettytable.PrettyTable([' ...
- Linux 下的 sleep
最近在阅读 libev 的源码,看到 libev 的代码里面的 sleep 实现, 我觉得可以把这个 sleep 实现单独拿出来,作为参考,以后可以直接拿来用. 代码如下(稍有修改): void ev ...
- TLB的作用及工作原理
TLB的作用及工作过程 以下内容摘自<步步惊芯——软核处理器内部设计分析>一书 页表一般都很大,并且存放在内存中,所以处理器引入MMU后,读取指令.数据需要访问两次内存:首先通过查询页表得 ...
- 【原创 Hadoop&Spark 动手实践 7】Spark 计算引擎剖析与动手实践
[原创 Hadoop&Spark 动手实践 7]Spark计算引擎剖析与动手实践 目标: 1. 理解Spark计算引擎的理论知识 2. 动手实践更深入的理解Spark计算引擎的细节 3. 通过 ...
- 【Java】Java8的Lambda入门记录
简化定义匿名实现类 匿名实现类的传统方式 创建一个线程,需要实现Runnable接口,并实现public void run()方法,用传统的方式是这样的: public static void mai ...
- [转]decorator(HTML装饰器)
原文地址:https://blog.csdn.net/jzh440/article/details/7770013 1>:每当遇到一个新的技术,首先我会问自己,这个技术是做神马的?用这个技术有神 ...
- Win2003打开网页时总是提示添加网址到信任站点的设置方法
在WIN2003系统中,我们打开网页,或打开网站,或浏览网页时,老是跳出一个窗口提示“添加网址到信任站点”,“网页老是提示添加信任”或“2003每打开一次网页都要加入受信任站点”或“win2003提示 ...