8.文件操作
在磁盘中读取文件
# f1 = open ('d:/新建文本文档.txt',mode = 'r',encoding = 'gbk') #文件存储使用的是国标 # f2 = f1.read() # print (f2) # f1.close 文本文档存储什么东西,打印的就是什么
读取文档按行读
f1 = open ('d:/新建文本文档.txt',mode = 'r',encoding = 'gbk') line = f1.readline() #readline 按行读 line2 = f1.readline() #读取文件的两种情况 print (line) print (line2)
"C:\Program Files\Python37\python.exe" D:/python/day8/3.文件的基本操作.py
刘洋洋爱黄慧婷
他会一直爱
每一个打印语句会有个换行加上自己点击的换行 所以会产生空行
f1 = open ('d:/新建文本文档.txt',mode = 'r',encoding = 'gbk')
line = f1.readline().strip() #readline 按行读
line2 = f1.readline().strip() #读取文件的两种情况
print (line)
print (line2)
解决方法 去除空白空格、\n print 语句源码中后面会有个end = '\n'
# f2 = f1.readlines() # print(f2) readlines全部加载在一个列表中 [' 刘洋洋爱黄慧婷\n', '他会一直爱 \n', ' 他会更爱']
readlines () 和 f2 = f1.read() print (f2)
都是一次性取出,如果文件比较大的时候,容易产生内存溢出操作比较麻烦
write 写入
f = open('d:/liuyang.txt',mode = 'w',encoding = 'utf-8')
f.write('周笔畅\n')
f.flush()
f.close()
程序执行以后,会在磁盘中生成一个文本文档,里面有周笔畅
如果在程序里把周笔畅删了,换个东西,则原来产生的文件就会没有,变成新添加的的
相反如果不删原来的写 在下边继续写,则会在文本中不断地添加
a
f = open('d:/liuyang.txt',mode = 'a',encoding = 'utf-8')
f.write('哇哈哈\n')
f.write('爽歪歪\n')# 会在原来的文本中追加写的
f.flush()
f.close()
用什么模式打开,只能干什么
写读模式
f = open("菜单", mode="w+", encoding="utf-8") f.write('饺子汤') f.seek(0)#移动到开头 f2 = f.read() print ('读取的内容是',f2) f.flush() f.close() #覆盖原有文档
读写模式
# f1 = open("菜单", mode="r+", encoding="utf-8") # f1 = f.read(1)#读取一个字符 # print (f1) # f.write('胡辣汤') # f.write('ab')#直接写,写入的是字节,把原来的内容盖上 # for line in f1: # print (line) # f1.write('煮饺子') # f1.close()# 正确用法,先读后写
追加读
f = open("菜单", mode="a+", encoding="utf-8") f.write("韭菜鸡蛋饺子") f.seek(0) content = f.read() #直接添加在后面 print(content)
文件的拷贝
f1 = open('D:/B612咔叽_20170930_143350.jpg',mode = 'rb') f2 = open("d:/我的自拍.jpg",mode = 'wb') for line in f1: f2.write(line) f1.close() f2.flush() f2.close()
10.光标
f = open("菜单", mode="a+", encoding="utf-8") # f.write('热烈分开了') # f.seek(0) # print (f.read()) #光标移到开头,并读 # f.seek(0) # # f.write('你') # # print (f.read()) # 使用tell()可以知道光标在哪里 # seek()可以移动光标 #读写的时候,单位字符 # 光标 单位是字节 # 光标移到末尾seek(0,2) # seek(偏移量,位置) # 位置 0 开头 1当前位置 2 末尾
11.
截断
f = open("新建文本文档.txt", mode="r+", encoding="utf-8") f.seek(9) f.truncate(6) f.flush() f.close() #截取的时候光标是字节
12.修改文件
import os #引入OS模块 import time #引入时间模块 with open('lyyhht',mode = 'r',encoding = 'utf-8')as f1,\ open('lyyhht副本',mode = 'w',encoding = 'utf-8') as f2: for line in f1: new_line = line.replace('刘洋洋','小爷') f2.write(new_line) time.sleep(3) os.remove('lyyhht') time.sleep(3) os.rename('lyyhht副本','lyyhht') 引入时间模块是为了看清楚这个过程,真正使用的时候不用
13.日志处理
2018-09-11 00:00:01|刘伟|吃鸡 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:01|刘伟|吃鸡 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 # result = [] # with open ('2018-09-28',mode = 'r',encoding = 'utf-8')as f: # # # hang = f.readline() # #tittle = hang.split('l') # for line in f: # line=line.strip()#去掉空格 # lst =line.split('|')#切割后是列表 # dic ={'时间':lst[0],'name':lst[1],'action':lst[2]} # result.append(dic) # print (result) 时间|姓名|action 2018-09-11 00:00:01|刘伟|吃鸡 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:01|刘伟|吃鸡 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 2018-09-11 00:00:02|王玉杰|打电话 result = [] with open ('2018-09-28.lo',mode = 'r',encoding = 'utf-8')as f: hang = f.readline() title = hang.split('|') for line in f: line=line.strip()#去掉空格 lst =line.split('|')#切割后是列表 dic ={title[0]:lst[0],title[1]:lst[1],title[2]:lst[2]} result.append(dic) print (result)
浙公网安备 33010602011771号