文件常用API

file = open('filename', 'w')
file.write('dididi') # 这是写入的内容
file.close()

会有许多不同的命令,可以根据需求去调用,要注意不会把写掉的东西覆盖。

open函数默认的编码是gbk中文编码,最好的习惯是打开文件时指定编码。

file = open('filename.txt','w', encoding='utf-8')

以二进制的形式写数据:'wb' str-->bytes

追加:a 新加的内容会写在原内容之后

*注意:如何使用 带'b'的后缀,说明是以二进制的形式读写,在write时,需要加上encoding 'utf-8'

-------------

读取文件

f = open('filename', 'r')
print(f.read())
print(f.read(12)) # 读取前12个字符
lines = f.readlines() # line是一个列表,每行
# 是列表的一个元素
for line in lines: 
	print(line)
f.close()  # 关闭文件对象
# 如果数据量不较大,则内存不会释放,或许造成内存泄漏
# 也可以以二进制的方式去读,如'rb'

with :文件读取好帮手, 自动释放读取的内存,避免忘记f.close()的问题。

with open('filename','w') as f:
    lines = f.readlines()
    for line in lines:
        print(line)

对文件读写做一下总结:

三、文件的备份

要求:用户输入文件名称,自动完成备份

# just copy the code is enough
# 明天跑一下这份代码
def copyfile():
    old_file = input('please input filename')
    file_list = olf_file.split(".")
    new_file = file_list[0] +'2' + file_list[1]
    old_f = open(old_file,'r')
    new_f = open(new_file,'w')
    content = old_f.read()
    new_f.write(content)
    old_f.close()
    new_f.close()
# 就是调用最基础的命令即可完成。

# 如果需要读写大文件,需要
try:
	with open(old_file, 'r') as old_f, open(new_file,'w') as new_f:
		while True:  # while 循环是一直进行的,除非触发break条件
			content = old_f.read(1024)
			new_f =write(content)
			if len(content) < 1024:
				break
except Exception as msg:
	print(mag)

文件定位:tell()

f = open('test.txt', 'r')
content = f.read(3)
cur = f.tell()
print(cur) # 读到光标位置

content = f.read(3)
cur = f.tell()
print(cur) # 到这里就是一共读取了6个字符

中文会占用两个字符的内存。

f = open('test.txt',r)
f.truncate(15)  # 保留前15个字符
print(f.read())
f.close() # 多余字符会被删除 

seek()函数,操作文件需要定位到其他位置,

seek(offset, from)  # offset为偏移量,负数为往前偏移
""" from 参数:
	0:表示文件开头
    1:表示当前位置
    2:文件末尾
"""
f.read().decode('gpk')  # 通过使用后缀可以读取中文
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值