小学生都能学会的python(文件操作)
小学生都能学会的python(文件操作)
1. open("文件路径", mode="模式", encoding="编码")
文件的路径:
1. 绝对路径:
1. 从磁盘根目录寻找
2. 网络上的路径
2. 相对路径
相对于当前你这个程序所在的文件夹.(用的最多的)
模式
r 读. 只读模式
w 写 只能写
f = open("d:/sylar.txt", mode="w", encoding="utf-8")
f.write("周笔畅\n") # 写的时候. 先清空. 再写入. w
f.write("胡辣汤\n")
f.write("实付款\n")
f.flush()
f.close()
a 追加写, 只能写入
f = open("d:/sylar.txt", mode="a", encoding="utf-8")
f.write("娃哈哈") # 追加写
f.write("爽歪歪")
f.flush()
f.close()
b: bytes 这个时候处理文件的是字节
操作非文本文件的时候用带b的
rb
wb
ab
r+ 读写模式
f = open("菜单", mode="r+", encoding="utf-8") # r+最常见
s = f.read(1) # 读取一个字符
print(s)
f.write("胡辣汤") # r+模式. 如果你执行读了操作. 那么写操作的时候. 都是写在文件的末尾. 和光标没有关系
# f.write("ab") # 在文件开头写入. 写入的是字节,把原来的内容盖上
# for line in f:
# print(line)
# f.write("蛋炒饭")
# 正确用法: 先读后写
f.close()
w+ 写读模式
f = open("菜单", mode="w+", encoding="utf-8") # 很少用.
f.write("疙瘩汤")
f.seek(0) # 移动到开头
content = f.read()
print("读取的内容是", content)
f.flush()
f.close()
a+ 追加读模式
f = open("菜单", mode="a+", encoding="utf-8")
f.write("韭菜鸡蛋饺子")
f.seek(0)
content = f.read()
print(content)
r+b
w+b
a+b
光标:
移动到开头: seek(0)
移动到末尾: seek(0, 2)
f = open("菜单", mode="a+", encoding="utf-8") # r+ a+ w+
# f.write("我要多写一点内容. 然后争取能看到效果")
# f.seek(0)
# print(f.read())
# f.seek(0)
# f.write("你")
#
# f.seek(0)
# print(f.read(1))
# f.seek(0)
# f.write("大米饭")
# f.write("大米粥")
# print(f.tell())
# f.seek(3) # 字节
# print(f.read(1))
# # print(f.read(1)) # 字符
# # print(f.read(1)) # 字符
# print(f.tell()) #字节
# 使用tell()可以知道光标在哪里
# seek()可以移动光标
# 读写的时候. 单位 字符
# 光标: 单位是字节
# 光标移动到末尾: seek(0,2)
# seek(偏移量, 位置)
# 位置: 0开头, 1当前位置, 2末尾
# 移动到末尾: seek(0, 2)
文件的修改:
1. 从源文件中读取内容. 修改内容. 写入到文件副本中.
2. 删除源文件. 重命名文件副本为源文件的名字
with open(..) as f
f = open("我的天呐", mode="r+", encoding="utf-8")
f.seek(9)
f.truncate(12) # 如果没有参数. 按照光标来阶段. 如果有参数. 截断到参数位置
f.flush()
f.close()
关于修改文件
import os # 引入os模块
with open("alex", mode="r", encoding="utf-8") as f1, \
open("alex_副本", mode="w", encoding="utf-8") as f2:
for line in f1:
new_line = line.replace("good", "sb")
f2.write(new_line)
os.remove("alex")
os.rename("alex_副本", "alex")
企业中日志处理
result = []
with open("2018-09-12.log", mode="r", encoding="utf-8") as f:
hang = f.readline()
title = hang.split("|")
for line in f:
line = line.strip() # 去掉空白, 2018-09-11 00:00:01|刘伟|吃鸡
lst = line.split("|")
dic = {title[0]: lst[0], title[1]: lst[1], title[2]: lst[2]}
result.append(dic)
print(result)
小学生都能学会的python(文件操作)的更多相关文章
- 小学生都能学会的python(函数的进阶)
小学生都能学会的python(函数的进阶) 1. 动态传参 形参: 1. 位置参数 2. 默认值参数 3. 动态传参 *args 动态接收位置参数 **kwargs 动态接收关键字参数 def fun ...
- 小学生都能学会的python(小数据池)
小学生都能学会的python(小数据池) 1. 小数据池. 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存:int, str, bool. int: 缓存范围 -5~256 ...
- 小学生都能学会的python(字典{ })
小学生都能学会的python(字典{ }) 1. 什么是字典 dict. 以{}表示. 每一项用逗号隔开, 内部元素用key:value的形式来保存数据 {"jj":"林 ...
- 小学生都能学会的python(列表[ ])
小学生都能学会的python(列表[ ]) 1. 什么是列表(list) 能装东西的东西 列表中装的数据是没有限制的, 大小基本上是够用的 列表使用[]来表示. 在列表中每个元素与元素之间用逗号隔开 ...
- 小学生都能学会的python(编码 and 字符串)
小学生都能学会的python(编码 and 字符串) 一,编码 最早的计算机编码是ASCII. 有英文+数字+特殊字符 8bit => 1byte 没有中文, 后面的编码必须兼容ASCII ...
- 小学生都能学会的python(<lamda匿名函数,sorted(),filter(),map(),递归函数>)
小学生都能学会的python(<<lamda匿名函数,sorted(),filter(),map(),递归函数,二分法>> 1. lambda 匿名函数 lambda 参数: ...
- 小学生都能学会的python(闭包和迭代器)
小学生都能学会的python(闭包和迭代器) 1. 函数名第一类对象 函数名其实就是变量名 1). 可以像变量一样互相赋值. 2). 可以作为函数的参数,进行传递 3). 可以作为返回值返回 4). ...
- 小学生都能学会的python(函数)
小学生都能学会的python(函数) 神马是函数 函数: 对功能或者动作的封装 函数的定义 def 函数名(形参列表): 函数体(return) ret = 函数名(实参列表) 函数的返回值 retu ...
- 小学生都能学会的python(深浅拷贝)
小学生都能学会的python(深浅拷贝) join() 把列表中的每一项用字符串拼接起来 # lst = ["汪峰", "吴君如", "李嘉欣&quo ...
随机推荐
- node+express框架中连接使用mysql经验总结
最近在学习node.js,做了一个练手项目,使用node.js+express框架,配合mysql数据库和前端vue框架开发一个多人文档编辑系统. koa,express,node 通用方法连接MyS ...
- js 现给数字加三位一逗号间隔的种方法
方法一:(ie下有问题) <script type= "text/javascript"> var num_s = "1232134456.546 " ...
- web.xml 中context-param元素
context-param元素含有一对参数名和参数值,用作应用的ServletContext上下文初始化参数.参数名在整个Web应用中必须是惟一的 param-name 子元素包含有参数名,而para ...
- HDU 4354
思路是在看电视时突然想到的.枚举区间,然后按树形DP来选择最大值看是否满足条件.但枚举区间时的方法低效,看了题解,说枚举区间可以设两个指针逐步移动, 开始 l = r = 1, 记录已经出现的国家. ...
- 解决Unity的 The file 'MemoryStream' is corrupted! Remove it and launch 崩溃问题
孙广东 2015.7.30 问题: 在项目平时删除资源或者脚本资源时产生的prefab的脚本引用丢失,特别是在场景scene中丢了解决方式/// 1.又一次Clone项目/// 2.删除项目的 ...
- 多线程的join和interrupt
你可以在一个线程1里添加线程2对象thread的join方法来让线程1处于等待的状态 ,同时也可以调用thread.interrupt()来打断等待状态,此处注意 interrupt应在线程1开启st ...
- 学习ASP.NET MVC系列 - 还有比这更简炼的吗?把复杂的事情变简单了,贡献啊!
转自
- Android学习笔记之ProgressBar案例分析
(1) <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to ...
- UVA 10859 - Placing Lampposts 树形DP、取双优值
Placing Lampposts As a part of the mission ‘Beautification of Dhaka City’, ...
- mysqli数据库操作简单实例
mysqli数据库操作简单实例 代码 结果