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的更多相关文章

  1. python全栈开发 * 10知识点汇总 * 180612

    10 函数进阶 知识点汇总 一.动态参数 形参的第三种1.动态接收位置传参 表达:*args (在参数位置编写 * 表⽰接收任意内容) (1)动态位置参数def eat(*args): print(a ...

  2. python全栈开发 * 01知识点汇总 * 180530

    一 python简介. 1.创始人:  吉多 .范罗苏姆  \   (Guido van Rossum). 2.时间  :  1989年. 3.主要应用领域  :  云计算 \  WEB开发  \   ...

  3. python全栈开发 * 32知识点汇总 * 180717

    32 网络编程 (一)一.架构 定义:程序员开发的一种模式. 分类: C/S 架构 C/S即:Client与Server , 客户端/ 服务器模式 . 缺点 : 冗余 B/S 架构 Browser与S ...

  4. python全栈开发 * 27知识点汇总 * 180710

    27   time  os  sys  模块 time 模块 一.表示时间的三种方式 时间戳(timestamp), 元组(struct_time),格式化时间字符串(Format string) 小 ...

  5. python全栈开发 * 26知识点汇总 * 180709

    26 logging collections random 模块 一.logging低配:日志不能写入文件与显示同时进行 import logging logging.basicConfig(leve ...

  6. python全栈开发 * 12 知识点汇总 * 180530

    12 知识点总结 装饰器进阶 ⼀. 通⽤装饰器的回顾1.开闭原则: 对增加功能开放. 对修改代码封闭2.装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能3.通⽤装饰器的写法:def wrap ...

  7. python全栈开发 * 36知识点汇总 * 180721

    36 操作系统的发展史 进程一.手工操作--穿孔卡片 1.内容: 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制 台开关启动程序针对 ...

  8. python全栈开发 * 31知识点汇总 * 180716

    31 模块和包一.模块(一)模块的种类:内置模块,自定义模块,扩展模块第三方模块(二)自定义模块 1.模块的创建 : 新建一个py文件. 2.模块名 : 模块名需要符合变量的命名规范. 3.模块的导入 ...

  9. python全栈开发 * 24 知识点汇总 * 180705

    24 模块-------序列化一.什么是模块 模块:py文件就是一个模块.二.模块的分类:(1)内置模块 (登录模块,时间模块,sys模块,os模块)(2)扩展模块 (itchat 微信有关,爬虫,b ...

随机推荐

  1. 众里寻他千百度?No!这项技术只需走两步就能“看穿”你!

    电影<碟中谍5>中阿汤哥带上了面具,顺利通过指纹锁,三重物理等重重关卡,却最终仍旧功亏一篑,正是由于“ 火眼金睛 ”——步态识别 .   (图片来源:碟中谍) 中国科学院自动化所的专家日前 ...

  2. linux下fallocate快速创建大文件

    以前创建文件我一般用dd来创建,例如创建一个512M的文件: dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1 ...

  3. Istio究竟是干嘛的?

    要聊ServiceMesh,就不得不提Istio,它是ServiceMesh目前最流行的实践, 当微服务架构体系越来越复杂的时候,需要将“业务服务”和“基础设施”解耦,将一个微服务进程一分为二: 一个 ...

  4. curl 模拟请求

    https://www.jianshu.com/p/7965c56c5a2e ********************************************* 一般情况下我们会在网页上请求后 ...

  5. css实现高度或者宽度不固定的div元素垂直左右居中

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. nginx转发成功报400 bad request,服务端未收到请求

    nginx转发成功报400 bad request,服务端未收到请求 解决办法: upstream后面不要跟下划线 例如: upstream auth_service{ server 30.4.164 ...

  7. Maven知识总结(转)

    原文地址:http://blog.csdn.net/caihaijiang/article/details/6664910 1.Maven内置变量说明: ${basedir} 项目根目录 ${proj ...

  8. C语言 goto语句

    /* goto语句 */ #include <stdio.h> #include <stdlib.h> #include <string.h> /* goto语句也 ...

  9. PXE:偷梁换柱,成功 启动 centos live

    default menu.c32 timeout 1 ### 偷梁换柱,成功 label centos76-live menu label centos76-live from ftp kernel ...

  10. Cesium高度解析

    var viewer = new Cesium.Viewer('cesiumContainer', { shadows : true }); //为true时,球体会有高程遮挡效果(在没有地形时候也会 ...