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. 【原】Linux环境下Shell调用MySQL并实现定时任务

    对于一些周期性事务,我们可以在Linux下,使用shell脚本调用mysql数据库存储过程,并设置定时任务. 本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...使用cron ...

  2. BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server)

    微软 BI ETL 架构设计 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架 如何管理和记录 SSIS 各个 Task 的开始执行时间和结束时间以及 Task 中添加|删除|修改 ...

  3. ffmpeg -i 10.wmv -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 5 C:\fm\074\10\10.m3u8

    ffmpeg -i 10.wmv -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 5 C:\fm\074\10\1 ...

  4. Mysql中的定时任务

    一.说明 后台周期定时任务可以有多种解决方案,我所知道的大概有以下几种: 后台框架自带定时任务.比如php中的Laravel框架里有提供定时任务操作接口,其他的框架大家可以单独针对了解. 服务器操作系 ...

  5. Python学习笔录

    参考:http://www.runoob.com/python3/python3-data-type.html 1. type和isinstance区别type(A()) == A, type()不会 ...

  6. 构建自己的 Smart Life 私有云(二)-> 连通 IFTTT & Slack

    博客搬迁至https://blog.wangjiegulu.com RSS订阅:https://blog.wangjiegulu.com/feed.xml 原文链接:https://blog.wang ...

  7. paste

    echo "step 1" >> steplog.txt    echo "step 1"        sudo apt-get install ...

  8. iOS 实现单个页面支持横竖屏,其他页面只能竖屏

    最近在自己的项目里面 有需要做一个需求 : app中某一个页面支持横竖屏, 而其他页面只能竖屏. 1 2 实现方法如下: 1 首先需要Xcode中选中支持的屏幕方向  2 Appdelegate中 . ...

  9. MPU6050带字符驱动的i2c从设备驱动2

    #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #inclu ...

  10. Python PIL 的image类和numpy array之间的互换

    import cv2 import numpy as np from PIL import Image from PIL import ImageEnhance def getline(frame): ...