文件操作

Posted mrhb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件操作相关的知识,希望对你有一定的参考价值。

文件处理

(1)读
f = open(file=‘D:/python/shopping.txt‘,mode=‘r‘,encoding=‘utf-8‘)
data = f.read()
f.close()

安装第三方工具包
pip3 install chardet#安装

import chardet
f = open(‘shopping.txt‘,‘rb‘) #以二进制打开
data = f.read()
data
chardet.detect(data)#检测data是什么编码

data.decode("gb2312") #从GB2312转码成unicode(decode:解码)

(2)写文件
f = open(file=‘D:/python/shopping.txt‘,mode=‘w‘,encoding=‘utf-8‘)
f.write(‘北大本科美国留学一次50‘) #内容写入文件
f.close()

f = open(’兼职.txt‘,mode=‘w‘,encoding=‘gbk‘)#w是创建新文件,如果创建新文件的时候与原来的重名就清空了
f.write("路飞滨城!").encode(‘gbk‘) #字符为unicode,写入后按gbk编码
f.close()

(3)追加
注意:文件操作时,以”a"或“ab"模式打开,则只能追加,即:在原来内容的尾部追加内容
写入到硬盘上时,必须是某种编码的0101010,打开时需要注意:
ab,写入时需要直接传入以某种编码的0101010,即:字节类型
a和encoding,写入时需要传入unicode字符串,内部会根据encoding制定的编码将unicode字符串转换为该编码的0101010
f = open(“兼职.txt",‘a‘,encoding=‘gbk‘)
f.write("\n杜姗姗 北京 167 49 1333333333")
f.close()

(4)读写模式r+:先读后写
(5)写读模式w+:以创建的模式打开(新写入的可读,原来的内容覆盖了)#基本不用

flush()把文件从内存buffer里强制刷新到硬盘
readable()#判断文件是否可读 w模式为不可读
writable()#判断文件是否可写
readline()#一行一行读

不管是tell还是seek找的都是字节,read是按字符
f.tell()#当前光标的位置
seek()#光标定位位置

utf-8:3个字节
gbk:2个字节

seekable()#二进制文件都可进行seek,特殊文件不可seek(例如:终端文件)
truncate()#按指定长度截断文件,f.truncate()当前位置往后截断
truncate(3)#加数字表示从头开始截多少

修改文件
f = open("兼职.txt",‘r+‘)
f.seek(6)#移动光标到第6个位置
f.write("路飞索隆")#从第6个位置开始会覆盖后面的内容(字符长度一样的话可修改)
f.close()

修改文件 占硬盘
f_name = "兼职.txt"
f_new_name = "%s.new" %f_name

old_str = "胡一菲"
new_str = "陈红"

f = open(f_name,"r",encoding="utf-8")
f_new = open(f_new_name,"w",encoding="utf-8")

for line in f_name:
if old_str in line:
line = line.replace(old_str,new_str)
f_new.write(line)
f.close
f_new.close

重命名
import os #调用系统命令
os.rename(f_new_name,f_name)#把新文件保存为旧文件名

以上是关于文件操作的主要内容,如果未能解决你的问题,请参考以下文章

python 文件操作python 文件操作

文件读写操作

文件操作

文件操作

Python文件操作

python文件操作