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. kvm上已安装的虚拟机修改为桥接网络

    kvm上安装的虚拟机默认使用的nat网络格式,现在已经调整kvm主机为桥接方式了,但是已经安装的虚拟机还是nat方式,所以需要修改一下 让KVM虚拟主机使用桥接网络br0 修改虚拟机的配置文件,默认存 ...

  2. Prometheus监控Nginx

    转载自:https://www.cnblogs.com/you-men/p/13173245.html CentOS7.3 prometheus-2.2.1.linux-amd64.tar.gz ng ...

  3. Linux 上安装 PostgreSQL

    打开 PostgreSQL 官网 https://www.postgresql.org/,点击菜单栏上的 Download ,可以看到这里包含了很多平台的安装包,包括 Linux.Windows.Ma ...

  4. Maven+SpringMVC+Dubbo 简单的入门demo配置

    转载自:https://cloud.tencent.com/developer/article/1010636 之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程 ...

  5. Rust学习入门

    介绍 特性: 高性能,内存利用率高,没有运行时和垃圾回收 可靠 , 丰富的类型系统和所有权模型保证内存和线程安全,编译器可以消除各种错误 生产力, 包管理器.构建工具一流, 多编辑器支持自动补齐和格式 ...

  6. 03_配置Java环境变量

    配置Java环境变量 右键我的电脑-属性-高级系统设置-环境变量 系统变量-新建-变量名JAVA_HOME,变量值为JDK安装路径 系统变量-新建-变量名CLASSPATH,变量值为英文输入法下的. ...

  7. 线程池底层原理详解与源码分析(补充部分---ScheduledThreadPoolExecutor类分析)

    [1]前言 本篇幅是对 线程池底层原理详解与源码分析  的补充,默认你已经看完了上一篇对ThreadPoolExecutor类有了足够的了解. [2]ScheduledThreadPoolExecut ...

  8. BUUCTF-PWN-第一页writep(32题)

    温故而知新,可以为师矣.所以花了几天时间重新做了下 buuctf 的 pwn 题,先发下第一页共 32 题的题解.还有如果题解都很详细那么本文就太长了,写起来也浪费时间,所以比较简单的题就直接丢 ex ...

  9. Podman容器技术基础

    Podman容器技术基础 目录 Podman容器技术基础 简介 安装 基础命令 简介 Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用.Podman 提供与 Docker ...

  10. emqx启用JWT令牌认证(包含hmac-based和public-key)

    emqx连接启用jwt令牌认证 jwt令牌 概述 JWT 即 JSON Web Tokens 是一种开放的,用于在两方之间安全地表示声明的行业标准的方法(RFC 7519). 组成 令牌的形式 xxx ...