不是python中文件操作_python中文件的操作

文件操作函数

open(文件名(或者路径)),mode="模式",encoding="字符集")

close(),每打开一个文件记得要关闭,否则删不掉

flush(),刷新,写,追加后要刷新

f = open("文件名或路径", mode="模式", encoding="UTF-8")

s = f.read()

f.close

with open("文件名", mode="模式", encoding="utf-8") as f:#比较友好,可以不关闭文件,它自动刷新和关闭文件

路径

绝对路径:从磁盘的根目录寻找 或者 从互联网上寻找一个路径

相对路径:(用的多). 相对于当前程序所在的文件夹 ../上一层文件夹

常用操作

r:读

f = open("哈哈哈哈哈", mode="r", encoding="UTF-8")

s=f.read()print(s)

f.close()#如果没有这句话, 你在下面的程序中如果删除这个文件. 就会报错

for line in f: #文件是一个可迭代对象

print(line.strip()) #一行一行的处理数据

lst =f.readlines()print(lst)

f.close()

w:写

#带w的. 只要你操作了. 就会清空源文件#如果文件不存在. 会自动创建文件

f = open("阿西吧", mode="w", encoding="utf-8")

f.write("呀! 养狗了没有?\n")

f.write("养狗四米大")

f.flush()

f.close()

a:追加

#写的时候. 换行需要手动控制换行 \n

f = open("阿西吧", mode="a", encoding="utf-8")

f.write("四米大?")

f.write("四米大")

f.flush()

f.close()

r+:读写

#r+ 先读后写

f = open("阿西吧", mode="r+", encoding="utf-8")

s= f.read(3) #读取三个字符

print(s)

f.write("不养了. 送人") #在末尾写

f.write("葫芦娃")

s=f.read()print(s)

s= f.read(2)print(s)

f.write("还有何云伟")

f.close()

w+:写读

#w+,先写后读,很少用. 因为会清空文件中的内容

f = open("阿西吧", mode="w+", encoding="utf-8")

f.write("张云雷也要退出德云社") #写完之后光标在最后. 读取是没有内容的

f.seek(0) #移动光标, 移动到开头

s =f.read()print("读取的内容是",s)

f.flush()

f.close()

a+:追加读写

f = open("阿西吧", mode="a+", encoding="utf-8")

f.write("我要加入德云社")#清空源文件内容,写入"我要加入德云社"

f.seek(0) #移动光标到开头,原因:写入完毕,光标停留在写完最后的位置

s = f.read() #不移动光标什么都读不出来

print(s) #我要加入德云社

f.flush()

f.close()

rb, wb, ab, r+b, w+b, a+b:非文本文件的读,写,追加,读写,写读,追加读写(b在这里代表bytes)

rb, wb, ab, bytes#如果处理的是非文本文件, mode里如果有b. encoding就不能给了

f = open("c:/pdd.jpg", mode="rb") #这里不能写encoding

e = open("e:/pdd.jpg", mode="wb")for line in f: #从c盘读取 line你是不知道读取了多少数据的

e.write(line) #写入到e盘

f.close()

e.flush()

e.close()

常用操作

seek(偏移量, 位置)

光标(seek)*

seek(0) 光标移动到开头

seek(0,2) 光标移动到结尾

seek(0,1)当前光标

tell() 告诉光标的位置

truncate截断文件

1.从文件开头截断到光标位置

2.如果给参数. 从头截断到参数位置

文件的修改

步骤:

1. 引入os模块

2. 打开目标文件, r

3. 打开文件副本, w

4. 从r中读取内容进行修改. 写入到副本中

5. 删除源文件

6. 重命名副本

#将原文件中的'alex'换成'很屌'

import os #引入模块#with open('a1.txt',mode='r',encoding='utf-8') as f, \#open('a1副本.txt',mode='w',encoding='utf-8') as f1:#for line in f:#line = line.replace("alex", "很屌")#f1.write(line)#os.remove("a1.txt") #删除原文本#os.rename("a1副本.txt","a1.txt") #将新文本重命名为原文件名

#示例,日志的终极处理方法

import os # 引入模块

lst = []

with open("2018-08-06.log", mode="r", encoding="utf-8") as f: #这种写法比较友好,不用打close()

first = f.readline().strip().split(",") #去除空白,分割','形成列表

for line in f: #循环文件,循环的结果是每一行

#dic = {} # 每一行一个字典

# 1,alex,10086,特斯拉

ls = line.strip().split(",") #每一行都去除空格,以','分割,形成列表

for i in range(len(first)): #不管源文件如何增加内容,这里每次都可以循环到,可以添加到字典中

dic[first[i]] = ls[i] #比原来更方便

lst.append(dic)

print(lst)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值