Python文件操作(二)

本文介绍了Python中文件操作的基本方法,包括光标移动、数据读写、覆盖写和重命名,同时讲解了函数的概念、使用以及与循环的区别。还涉及了os模块的文件和目录操作,以及如何通过函数实现代码复用和优化。

文件内光标的移动

read():用户可以在read中输入数字表示读取几个字符。

'''1.txt文件中: abc在这里   '''
with open(r'1.txt','rb') as f:
    data = f.read(6)
    print(data.decode('utf8'))
[abc在]

ps:在二进制模式下 英文一个字节 中文三个字节。

tell() :获取光标移动的字节数

with open(r'1.txt','r',encoding='utf8') as f:
    data = f.read()
    print(f.tell())
# 打印结果
[12]

seek(offset,whence) :方法用于移动文件读取指针到指定位置。

\bullet offset:需要移动偏移的字节数

\bullet whence:0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

with open(r'1.txt','rb') as f:
    f.seek(0,0)
    print(f.read().decode('utf8'))
# 打印结果
[abc在这里]
with open(r'1.txt','rb') as f:
    f.seek(9,1)
    print(f.read().decode('utf8'))
# 打印结果
[里]
with open(r'1.txt','rb') as f:
    f.seek(-6,2)
    print(f.read().decode('utf8'))
# 打印结果
[这里]

 文件内数据修改

有两种代码修改文件的方式:

1.覆盖写

        先读取文件内的内容到内存,再在内存中完成修改,用w模式把新内容写入该文件中。

with open(r'1.txt','r',encoding='utf8') as f:
    data = f.read()
new_data = data.replace('b','a')
with open(r'1.txt','w',encoding='utf8') as f1:
    f1.write(new_data)

'''将1.txt中的b改为a'''

ps:优点硬盘只占用一块空间;缺点运行时数据量较大时会造成内存溢出。

2.重命名

        用for循环依次取出文件内容进行修改然后存放到另一个文件夹内,完成后删除原文件并将新文件重命名成原文件名。

import os
with open('1.txt', 'r', encoding='utf8') as read_f, \
        open('.1.txt.swap', 'w', encoding='utf8') as wrife_f:
    for line in read_f:
        wrife_f.write(line.replace('ab', 'AB'))
os.remove('1.txt')  # 删除文件
os.rename('.1.txt.swap', '1.txt')

ps:优点此命名不会造成内存溢出;缺点有一瞬间需要占用硬盘两个地方(也可能在内存中创建没有刷到硬盘)。

文件操作补充即优化

文件操作中还有一些操作需要导入模块os这里进行补充通过os模块还能对目录等进行操作:

1.文件操作

rename重命名文件os.rename()
remove删除文件os.remove()
import os #导入os包

os.rename('1.txt','2.txt')
'''将1.txt文件名改成2.txt'''
os.remove('2.txt')
'''将2.txt文件删除'''

2.目录操作

listdir目录列表os.listdir(目录名)
mkdir创建目录os.mkdir(目录名)
rmdir删除目录os.rmdir(目录名)
getcwd获取当前目录os.getcwd()
chdir修改工作目录os.chdir(目标目录)
path.isdir判断是否是目录os.path.isdir(文件路径)

 函数的简介

简介:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。能提高应用的模块性,和代码的重复利用率。


函数语法:

def 函数名():
	语句
	return 需要返回的数值

\bullet 一个函数有return才有返回值

def num(a,b):
    return a*b

print(num(3,6))
'''调用num函数并输入参数 打印结果:18'''

函数与循环的区别

1.循环

        在相同的位置反复执行相同的代码

2.函数

        在不同的位置反复执行相同的代码


未完待续。。。。。。。。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值