python中文件操作相关基础知识

文件的概念

1,文件的概念?
文件就是操作系统暴露给用户操作硬盘的快捷方式 ,
当我们双击一个文件进行打开时,其实就是把硬盘中的数据加载到了内存中,然后展示给我们
ctrl+s 保存文件时,其实就是命令系统立刻把内存中的数据刷新到硬盘中。 2.python代码如何打开文件
方式1:
f = open('文件路径','读写模式','编码设置')
f.close
# 当打开文件使用完毕后需要关闭,方式1系统不会帮助你关闭文件 方式2:
with语法
with open(r'文件绝对路径','读写模式','编码设置') as 变量名:
# 文件路径前面加上r 养成良好习惯,避免文件路径中含有特殊字符
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()
读写模式下只能对文件 只能读只能看不能写
# 此模式下,如果文件路径不存在 则程序直接报错
# 如果文件使用read方法可以直接读取
# 如果文件较大 也可以使用for循环进行一行行阅读 3.只写模式 'w'
with open(r'/Users/moongod/Desktop/测试.txt','w',encoding='utf8') as f:
f.write('写入的内容或变量名等')
f.write('写入的内容或变量名等\n')
只写模式下,如果文件被写入内容,则默认会清除之前的所有内容,只保留当前刚刚写下的内容
# 注意 如果写入的内容需要换行,需要手动输入\n 换行符处理。
# 并且在数据比对的时候 记得改文件换行时 有\n存在
# 如果路径不存在,则会自动创建该文件 4.追加模式 'a'
with open(r'/Users/moongod/Desktop/测试.txt','a',encoding='utf8') as f:
f.write('写入的内容或变量名等')
f.write('写入的内容或变量名等\n')
追加模式下。写入的内容会默认添加到文件尾部。
# 如果需要换行 记得在文件最前面加上换行符 \n
# 如果路径不存在,则会自动创建该文件 5 pass用法
with open(r'/Users/moongod/Desktop/测试.txt','a',encoding='utf8') as f:
pass
# 用于补全语法,无任何实际含义,有时候我们不知道写什么时,可以先写一个pass

文件操作类型

1.文本模式 t
目前我们学的都是针对纯文本的文件操作,r w a 模式
#只能用来操作纯本文文件
#读写时都是以字符为单位
#需要设置encoding参数 2.二进制模(bytes模式)
不是默认的模式,需要手动指定 rb wb ab
#可以操作任意类型文件
#读写都是以bytes为单位的
#不需要encoding参数,因为它已经是二进制了

文件的方法

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)
# seek(offset, whence)
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('修改内容','新的内容'))
#先打开文件,然后使用另一个变量获取文件所有内容,然后再次使用写的模式打开文件
#然后在文件中重新写入数据,使用replace方法替换原来的数据 换地方重新写:
import os with open('a.txt', 'r', encoding='utf8') as read_f,
open('.a.txt.swap', 'w', encoding='utf-8') as write_f:#.swap 临时文件
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:
# 使用临时变量 line 遍历 源文件
f1.write(line)
# 写入新文件,写入内容是 遍历的每一行的源文件 line
print('拷贝成功') 2.利用文件充当数据库编写用户登录、注册功能 #文件名称: userinfo.txt
# 用户可以连续注册
# 用户可以多账号切换登录(多用户)
# 文件内有多个用户信息 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('请输入正确的编号')

python中文件操作相关基础知识的更多相关文章

  1. python中文件操作的六种模式及对文件某一行进行修改的方法

    一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...

  2. python中文件操作的其他方法

    前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...

  3. python中文件操作的基本方法

    在python中对一个文件进行操作,分为三大步:打开,操作,关闭 首先创建一个文件hello,里面内容为hello world 一.打开一个文件 1.#open(‘文件名或文件路径’,‘操作模式’,文 ...

  4. Python中文件操作2——shutil模块

    1 文件操作 文件有很多的操作,之前的文件操作中介绍了内建函数对文件的打开.读取以及写入,这三种操作是对文件基本的使用.文件还有复制.删除.移动.改变文件的属主属组等操作.下面主要看os模块和shut ...

  5. Python 中文件操作

    上代码: import os import os.path rootdir = "d:/code/su/data" # 指明被遍历的文件夹 for parent,dirnames, ...

  6. python中文件操作

      打印进度条

  7. 『无为则无心』Python基础 — 41、Python中文件的读写操作(一)

    目录 1.文件操作步骤 2.文件的读写操作 (1)文件的打开 (2)打开文件模式 (3)获取一个文件对象 (4)关于文件路径 1.文件操作步骤 当我们要读取或者写入文件时,我们需要打开文件,在操作完毕 ...

  8. 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容

     孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...

  9. python 中文件输入输出及os模块对文件系统的操作

    整理了一下python 中文件的输入输出及主要介绍一些os模块中对文件系统的操作. 文件输入输出 1.内建函数open(file_name,文件打开模式,通用换行符支持),打开文件返回文件对象. 2. ...

  10. 深入理解mysql之BDB系列(1)---BDB相关基础知识

        深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富   一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...

随机推荐

  1. 给 SSH 启用二次身份验证

    转载自:https://mp.weixin.qq.com/s/ssuhFbfaHxxzGmLg6Y2MjA 目前来说,二次验证(这里就不做过多解释了)是比较常用的安全手段,通过设置二次验证(谷歌或其他 ...

  2. 3_MyBatis

    一. 引言 1.1 什么是框架? 软件的半成品, 解决了软件开发过程中的普适性问题, 从而简化了开发步骤, 提升了开发效率 1.2 什么是ORM框架? ORM(Object Relational Ma ...

  3. 微信小程序开发优化

    一.开发优化一 1.使用Vant Weapp 1.1 什么是Vant Weapp Vant Weapp官网链接 Vant Weapp是有赞前端团队开源的一套小程序UI组件库,助力开发者快速搭建小程序应 ...

  4. The XOR Largest Pair (trie树)

    题目描述 在给定的 NN 个整数 A_1,A_2,--,A_NA1​,A2​,--,AN​ 中选出两个进行xor运算,得到的结果最大是多少?xor表示二进制的异或(^)运算符号. 输入格式 第一行输入 ...

  5. 什么是Scrum?Scrum的核心要点和精髓

    有点长,期望你能通过本文彻底了解 Scrum. 上一篇文章<研发效能组织能力建设之特性团队FeatureTeam(上)>,我们介绍了一个非常有意思且高效的组织模式-特性团队.我们首先介绍了 ...

  6. Vue 中为什么要有nextTick?

    摘要:本文将浅析nextTick的作用.使用场景和背后的原理实现,希望对大家有所帮助. 本文分享自华为云社区<Vue 中的 nextTick 有什么作用?>,作者:CoderBin. 一. ...

  7. dotnet 用 SourceGenerator 源代码生成技术实现中文编程语言

    相信有很多伙伴都很喜欢自己造编程语言,在有现代的很多工具链的帮助下,实现一门编程语言,似乎已不是一件十分困难的事情.我利用 SourceGenerator 源代码生成技术实现了一个简易的中文编程语言, ...

  8. 认识 Redis client-output-buffer-limit 参数与源码分析

    概述 Redis 的 client-output-buffer-limit 可以用来强制断开无法足够快从 redis 服务器端读取数据的客户端.保护机制规则如下: [hard limit] 大小限制, ...

  9. API接口笔记

    1.基类   定义返回信息 protected $user; //用户表 protected $token; //用户token protected $isSuccess = FALSE; //状态是 ...

  10. 1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程

    1.使用简单工厂模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...