python中文件操作相关基础知识
文件的概念
1 ,文件的概念?
文件就是操作系统暴露给用户操作硬盘的快捷方式 ,
当我们双击一个文件进行打开时,其实就是把硬盘中的数据加载到了内存中,然后展示给我们
ctrl+ s 保存文件时,其实就是命令系统立刻把内存中的数据刷新到硬盘中。
2 . python代码如何打开文件
方式1 :
f = open ( '文件路径' , '读写模式' , '编码设置' )
f. close
方式2 :
with 语法
with open ( r'文件绝对路径' , '读写模式' , '编码设置' ) as 变量名:
with 语法不需要关闭文件,当此语法进行完毕系统会自动关闭文件
也可以一次性打开多个不同的文件
with open ( r'文件绝对路径' , '读写模式' , '编码设置' ) as a, open ( r'文件绝对路径' , '读写模式' , '编码设置' ) as b:
文件读写模式
1 ,什么是读写模式
当我们打开一个文件时,我们要告诉计算机用什么方式打开有3 种方式(r只读模式 w写入模式 a追加模式)
2. 只读模式 'r'
with open ( r'/Users/moongod/Desktop/测试.txt' , 'r' , encoding= 'utf8' ) as f:
f. read( )
读写模式下只能对文件 只能读只能看不能写
3. 只写模式 'w'
with open ( r'/Users/moongod/Desktop/测试.txt' , 'w' , encoding= 'utf8' ) as f:
f. write( '写入的内容或变量名等' )
f. write( '写入的内容或变量名等\n' )
只写模式下,如果文件被写入内容,则默认会清除之前的所有内容,只保留当前刚刚写下的内容
4. 追加模式 'a'
with open ( r'/Users/moongod/Desktop/测试.txt' , 'a' , encoding= 'utf8' ) as f:
f. write( '写入的内容或变量名等' )
f. write( '写入的内容或变量名等\n' )
追加模式下。写入的内容会默认添加到文件尾部。
5 pass 用法
with open ( r'/Users/moongod/Desktop/测试.txt' , 'a' , encoding= 'utf8' ) as f:
pass
文件操作类型
1. 文本模式 t
目前我们学的都是针对纯文本的文件操作,r w a 模式
2. 二进制模( bytes 模式)
不是默认的模式,需要手动指定 rb wb ab
文件的方法
1 ,read( )
文件. read( )
2. for 循环
for line in 文件名:
3 . readline( )
文件. readline
4 . readlines( )
文件. readlines( )
5 . readable( )
文件. readable( ) 结果为 布尔值
6 . write( )
文件. write( )
7 . writeable( )
判断文件是否具备写数据的能力
8 . writelines( )
接收一个列表 一次性将列表中所有的数据值写入
9 . flush( )
将内存中文件数据立刻刷到硬盘 等价于ctrl + s
文件内光标的移动
关键词
seek
文件. seek( 0 ,0 )
offset是位移量 以字节为单位
whence是模式 0 1 2
0 是基于文件开头
文本和二进制模式都可以使用
1 是基于当前位置
只有二进制模式可以使用
2 是基于文件末尾
只有二进制模式可以使用
文件内容修改
1. 先了解电脑硬盘修改数据原理
当我们把一些文件或数据等保存到硬盘时,其实就是对硬盘进行了刻字,如果我们需要修改文件时,其实就是硬盘把之前刻的字抹除再次重新刻上了你修改过的整体数据
硬盘删除数据原理
当你在硬盘中删除文件或数据时,其实并没有删除,只是把文件和数据的状态从可用占有状态,改为了不可用不显示不占用的状态,当没有新的数据覆盖上时,其实之前删除的数据还是存在的。
当有新的数据覆盖上旧数据才算是被真正删除掉。
2. 在python中修改文件内容
覆盖法:
with open ( '测试.txt' , 'r' , encoding= 'utf8' ) as f:
d = f. read( )
with open ( '测试.txt' , 'w' , encoding= 'utf8' ) as f:
f. write( d. replace( '修改内容' ,'新的内容' ) )
换地方重新写:
import os
with open ( 'a.txt' , 'r' , encoding= 'utf8' ) as read_f,
open ( '.a.txt.swap' , 'w' , encoding= 'utf-8' ) as write_f:
for line in read_f:
write_f. write( line. replace( 'tony' , 'kevinSB' ) )
os. remove( 'a.txt' )
os. rename( '.a.txt.swap' , 'a.txt' )
文件操作小练习
1. 制作一个建议复制器,输入复制文件路径,输入新的文件路径 进行复制
file_path = input ( '请输入需要拷贝的文件路径' ) . strip( )
new_path = input ( '请输入新的文件路径' ) . strip( )
with open ( file_path, 'rb' ) as f, open ( new_path, 'wb' ) as f1:
for line in f:
f1. write( line)
print ( '拷贝成功' )
2. 利用文件充当数据库编写用户登录、注册功能
while 1 :
print ( '''
1.注册账户
2.登录账户
''' )
cmd = input ( '请输入您要进行的指令' ) . strip( )
if cmd == '1' :
with open ( '/Users/moongod/Desktop/userinfo.txt' , 'a' , encoding= 'utf8' ) as d:
pass
username = input ( '请输入用户名' )
with open ( '/Users/moongod/Desktop/userinfo.txt' , 'r' , encoding= 'utf8' ) as f:
for line in f:
real_name, real_pas = line. split( '|' )
if real_name == username:
print ( '用户名已被注册' )
break
else :
password = input ( '请输入密码' )
with open ( '/Users/moongod/Desktop/userinfo.txt' , 'a' , encoding= 'utf8' ) as f1:
f1. write( f' { username} | { password} \n' )
print ( f'注册成功,账户名: { username} ' )
elif cmd == '2' :
username = input ( '请输入用户名' )
password = input ( '请输入密码' )
with open ( '/Users/moongod/Desktop/userinfo.txt' , 'r' , encoding= 'utf8' ) as f:
for line in f:
real_name, real_pas = line. split( '|' )
if username == real_name and password == real_pas. strip( '\n' ) :
print ( '登录成功' )
break
else :
print ( '账号或密码错误' )
else :
print ( '请输入正确的编号' )
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了