【Python】文件操作(单文件操作)
目录
一、文件操作概述:
二、文件基本操作:
文件操作步骤:
1.打开文件:
2.对文件进行读写操作:
3.关闭文件的输入输出流:
demo:
文件访问模式:
基础访问模式特点:
读取操作:
1.read()
2.readline()
3.readlines()
文件对象方法:
seek()
三、文件备份:
实现步骤:
代码实现:
1.接收用户输入的目标文件名:
2.规划备份文件名:
3.备份文件写入数据:
4.代码优化:
一、文件操作概述:
文件操作:就是将数据从内存中进行持久化,读取本地磁盘或者远程服务器数据加载到内存中,可以使得程序在下一次执行时,可以直接使用上一次执行结束时的数据,而不必重新获取数据!
二、文件基本操作:
文件操作步骤:
1.打开文件:
使用open
函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:
open(name,mode)
- name:指定打开的目标文件名称的字符串(可以包含文件所在的具体路径)
- mode:设置打开文件的模式(只读,写入,追加等)
2.对文件进行读写操作:
# 指定文件对象,通过文件对象,对文件进行读写操作
f.write("hello krian !")
3.关闭文件的输入输出流:
# 关闭文件流
f.close()
demo:
f = open('test.text','w')#--------------------------------------------------# 1.打开一个文件(新创建一个文件) open()
f = open('test.text', 'w') # f:作为open函数的文件对象# 2.指定文件对象,对文件进行读写操作
f.write("hello krian !")# 3.关闭文件流
f.close()
注意:此时f
是open
函数的文件对象!
文件访问模式:
模式 |
描述 |
r |
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb |
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ |
打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ |
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w |
打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb |
以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
w+ |
打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ |
以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
a |
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab |
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ |
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ |
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
基础访问模式特点:
- 访问模式对文件的影响
- 访问模式对
write()
的影响
- 访问模式是否省略
r访问模式:
- 如果文件对象不存在,则会报错
- 不支持写入操作,表示只读
w访问模式:
- 如果文件对象不存在,不会报错,程序自动创建对应的文件对象
- 执行写入操作,如果文件对象已经存在,默认覆盖该文件对象
a访问模式:
- 如果文件对象不存在,不会报错,程序自动创建对应的文件对象
- 执行追加操作,如果文件对象已经存在,默认在文件末尾追加写入的内容
访问模式的参数是否可以省略:
- 针对已经存在的文件对象进行操作时,访问模式可以省略,默认时r访问模式
- 针对不存在的文件对象进行操作时,访问模式不可省略
读取操作:
1.read()
文件对象.read(num)
num:表示要从文件中读取的数据长度(单位字节),如果没有传入num那么就表示读取文件中所有的数据。
注意:每一行结尾处的"\n"的换行符对字节数的占用!!!
2.readline()
readline()
一次性读取一行内容:
f = open('test.txt')content = f.readline()
print(f'第一行:{content}')content = f.readline()
print(f'第二行:{content}')# 关闭文件
f.close()
3.readlines()
readlines()
函数可以按照行的方式把整个文件中内容进行一次性读取,并返回的是一个列表,其中每一行的数据作为一个元素。
test.text文件内容:
hello krian !
hello world !
hello lunaticer!
hello 明天!
# 1.打开一个文件(新创建一个文件) open()
f = open('test.text', 'r') # f:作为open函数的文件对象# 2.指定文件对象,对文件进行读取操作
test_text = f.readlines()
print(test_text) # ['hello krian !\n', 'hello world !\n', 'hello lunaticer!\n', 'hello 明天!']# 3.关闭文件流
f.close()
文件对象方法:
seek()
作用:用来移动文件指针。
文件对象.seek(偏移量,起始位置)
- 0:文件开头
- 1:当前位置
- 2:文件结尾
三、文件备份:
- 需求分析
- 根据需求分析步骤
- 根据实际场景体调优
实现步骤:
- 接收用户输入的文件名
- 规划备份文件名
- 备份文件写入数据(数据与原文件一致)
代码实现:
1.接收用户输入的目标文件名:
old_name = input('请输入您要备份的文件名:')
2.规划备份文件名:
rfind()
函数:从字符串右侧开始查找,返回下标索引值lfind()
函数:从字符串左侧开始查找,返回下标索引值
# 提取文件后缀点的下标
index = old_name.rfind('.')
字符串变量名[起始索引:终止索引]
:字符串切片,返回子串
old_name[:index]
# 组织新文件名 旧文件名 + [备份] + 后缀
new_name = old_name[:index] + '[备份]' + old_name[index:]# 打印新文件名(带后缀)
# print(new_name)
3.备份文件写入数据:
# 打开文件
old_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')# 将源文件数据写入备份文件
while True:con = old_f.read(1024)if len(con) == 0:breaknew_f.write(con)# 关闭文件
old_f.close()
new_f.close()
4.代码优化:
添加判断条件,限制后缀:
old_name = input('请输入您要备份的文件名:')index = old_name.rfind('.')if index > 0:postfix = old_name[index:]new_name = old_name[:index] + '[备份]' + postfixold_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')while True:con = old_f.read(1024)if len(con) == 0:breaknew_f.write(con)old_f.close()
new_f.close()
【Python】文件操作(单文件操作)相关推荐
- python能封装成exe文件_python文件封装成*.exe文件(单文件和多文件)
环境:win10 64位 python3.7 单*.py文件打包 Python GUI:程序打包为exe 一.安装Pyinstaller,命令pip install Pyinstaller,(大写的 ...
- 在线编写php文件,php单文件版在线代码编辑器_php实例
密码加密方式: * md5(自设密码+$ace) //$ace为cdn镜像地址 使用方法: * 1.确认 $pwd 变量值为 false, 上传本文件到PHP空间并访问 * 2.第一次访问提示设置密码 ...
- java 压缩文件夹_java 实现压缩文件(单文件 或 文件夹)
接着上篇了解一下java压缩实现过程,下面的是支持 单文件 或 文件夹 压缩的实现,使用递归. 效果: 代码: package com.gx.compress; import java.io.Buff ...
- php 打包上传的文件,PHP单文件上传原理及上传函数的打包
PHP单文件上传原理及上传函数的封装 服务器(临时文件)-->指定目录,当文件进入服务器时它就是临时文件了,这时操作中要用临时文件的名称tmp_name.//在客户端设置上传文件的限制(文件类型 ...
- 一篇文章带你搞定 SpringBoot 上传文件(单文件/多文件/Ajax上传)
文章目录 一.前期配置 二.单文件上传 三.多文件上传 四.Ajax 实现文件上传 五.属性配置 一.前期配置 同样不需要额外配置添加一个 web 功能模块即可 二.单文件上传 上传页面 index. ...
- python 保存数据单文件_python3.6 单文件爬虫 断点续存 普通版 文件续存方式
#导入必备的包#本文爬取的是顶点小说中的完美世界为列.文中的aa.text,bb.text为自己创建的text文件 importrequestsfrom bs4 importBeautifulSoup ...
- vue生成静态html文件_vue单文件组件,如何生成.html文件
vue-cli项目怎么生成.html文件? 项目使用了element-ui还有自定义的less文件 vue组件: 这是一段文字 ... 生成 ... ... handlerBulder () { co ...
- php怎么上传函数,PHP单文件上传原理及上传函数的封装操作示例
搜索热词 @H_404_0@本文实例讲述了PHP单文件上传原理及上传函数的封装操作.分享给大家供大家参考,具体如下: @H_404_0@表单: @H_404_0@0.PHP: 无标题文档 请选择您要上 ...
- vue单文件组件导入导出
目录分析 打开项目,依次分析下目录结构,项目目录结构如下 项目目录结构如下 单文件组件.vue 目完成后,我们看到src 目录下有一个componets 目录,里面有一个 HelloWorld.vue ...
- python解压打开文件过多_让Python在后台自动解压各种压缩文件!
一.需求描述 编写一个Python程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点: os 模块综合应用 glob 模块综合应用 利用 gzi ...
最新文章
- Yii2 使用 Joins 查询
- 4.4 I/O性能侦测
- oracle 根据分隔符提取,oracle根据分隔符获取字符串
- [转]MongoDB c++驱动安装与使用
- Synchronized结合Java Object对象中的 wait,notify,notifyAll
- 配置FTP服务2(vsftpd 配置虚拟账号)
- android开发入门
- 后端开发 java_Java后端开发三年,你不得不了解的JVM
- RabbitMQ 构建高可靠集群架构
- (23)Verilog HDL条件语句:if-else语句
- java并发:interrupt进程终止
- python面试题之Python 的特点和优点是什么
- 开发中,常用到的Eclipse快捷键
- 分享MYSQL中的各种高可用技术
- 深圳最牛街道办:腾讯华为设总部,百家上市公司年营收超2万亿
- 昨天晚上,世界首富马斯克给我上了一课!
- 2018秋招暨年度总结
- android xposed软重启,Xposed插件安装更新免重启手机方案
- 杉德支付php代码实现_杉德ecshop,thinkphp,shopnc在线支付接口,支付插件(payment plugin含源码)...
- week3note函数
热门文章
- 独家!天才少年 Vitalik:“中国开发者应多关注以太坊!”
- 诺基亚品牌手机不久将消失 Stephen Elop回应不是木马
- 呼叫系统使用webRTC网页软电话到底好不好?
- 计算机二级乙等题目,2015年全国计算机等级考试一级WPS练习题及答案
- 2017.2.10考试总结2017冬令营
- yiui易柚7 是Android什么版本,康佳YIUI易柚系统升级5.0版本
- Ubuntu软件管理工具
- cron表达式入门_Sourcehunt:Cron管理,Hackathon入门,PHP-GUI…
- 读书笔记 |《小强升职记》
- linux开机自启动程序设置方法