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)
日志的操作

 

posted on 2018-09-28 18:52  小王子QAQ  阅读(43)  评论(0)    收藏  举报