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. NSIS检测并统计字符串中某个字符个数

    !include "LogicLib.nsh" OutFile "检查找字符串中c出现的次数.exe" Name "test" Sectio ...

  2. 给nsis窗口添加立体阴影

    利用SetClassLong函数给nsis窗口添加了阴影,看起来很酷^_^ System::Call `user32::SetClassLong(i$HWNDPARENT,i${GCL_STYLE}, ...

  3. P7114 [NOIP2020] 字符串匹配 (字符串hash+树状数组)

    好多题解用的扩展KMP(没学过,所以不用这种方法). 我们按照题目要求记F(s)表示s串的权值,可以预处理出前缀权值(用于A)和后缀权值(用于C),枚举AB的长度i=2~n-1,不需要分开枚举,我们只 ...

  4. 洛谷P6033 [NOIP2004 提高组] 合并果子 加强版 (单调队列)

    数据加强了,原来nlogn的复杂度就不行了...... 首先对原来的n个数排序(注意不能用快排),因为值域是1e5,所以可以开桶排序,开两个队列,一个存原来的n个数(已经满足单增),另一队列存两两合并 ...

  5. 最长公共前缀(Java)

    编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入:strs = ["flower","flo ...

  6. Conda的使用

    conda常用的命令 在Anaconda Powershell Prompt 输入: 1.conda -V检验是否安装及当前conda的版本. 2.conda list查看安装了哪些包 3.conda ...

  7. C#-等待异步函数执行结果-将调用异步方法的函数变成非异步执行

    先来简单了解一下async.await 使用async await 的前提条件:需要C# 5.0以上版本 .NET Framework 4.5以上 Visual Studio 2012以上. asyn ...

  8. 来啦来啦|开源 * 安全 * 赋能 - .NET Conf China 2022

    大会介绍 .NET Conf China 2022 是面向开发人员的社区峰会,延续 .NET Conf 2022 的活动,庆祝 .NET 7 的发布和回顾过去一年来 .NET 在中国的发展成果,它是由 ...

  9. CodeTON Round 3 (C.差分维护,D.容斥原理)

    C. Complementary XOR 题目大意: 给你两个01串ab,问你是否可以通过一下两种操作在不超过n+5次的前提下将两个串都变为0,同时需要输出可以的操作方案 选择一个区间[l,r] 将串 ...

  10. 【CVE-2022-0543】Redis Lua沙盒绕过命令执行复现

    免责声明: 本文章仅供学习和研究使用,严禁使用该文章内容对互联网其他应用进行非法操作,若将其用于非法目的,所造成的后果由您自行承担,产生的一切风险与本文作者无关,如继续阅读该文章即表明您默认遵守该内容 ...