目录

一、文件操作概述:

二、文件基本操作:

文件操作步骤:

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()

注意:此时fopen函数的文件对象!

文件访问模式:

模式

描述

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. 需求分析
  2. 根据需求分析步骤
  1. 根据实际场景体调优

实现步骤:

  1. 接收用户输入的文件名
  2. 规划备份文件名
  1. 备份文件写入数据(数据与原文件一致)

代码实现:

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】文件操作(单文件操作)相关推荐

  1. python能封装成exe文件_python文件封装成*.exe文件(单文件和多文件)

    环境:win10 64位  python3.7 单*.py文件打包 Python GUI:程序打包为exe 一.安装Pyinstaller,命令pip install Pyinstaller,(大写的 ...

  2. 在线编写php文件,php单文件版在线代码编辑器_php实例

    密码加密方式: * md5(自设密码+$ace) //$ace为cdn镜像地址 使用方法: * 1.确认 $pwd 变量值为 false, 上传本文件到PHP空间并访问 * 2.第一次访问提示设置密码 ...

  3. java 压缩文件夹_java 实现压缩文件(单文件 或 文件夹)

    接着上篇了解一下java压缩实现过程,下面的是支持 单文件 或 文件夹 压缩的实现,使用递归. 效果: 代码: package com.gx.compress; import java.io.Buff ...

  4. php 打包上传的文件,PHP单文件上传原理及上传函数的打包

    PHP单文件上传原理及上传函数的封装 服务器(临时文件)-->指定目录,当文件进入服务器时它就是临时文件了,这时操作中要用临时文件的名称tmp_name.//在客户端设置上传文件的限制(文件类型 ...

  5. 一篇文章带你搞定 SpringBoot 上传文件(单文件/多文件/Ajax上传)

    文章目录 一.前期配置 二.单文件上传 三.多文件上传 四.Ajax 实现文件上传 五.属性配置 一.前期配置 同样不需要额外配置添加一个 web 功能模块即可 二.单文件上传 上传页面 index. ...

  6. python 保存数据单文件_python3.6 单文件爬虫 断点续存 普通版 文件续存方式

    #导入必备的包#本文爬取的是顶点小说中的完美世界为列.文中的aa.text,bb.text为自己创建的text文件 importrequestsfrom bs4 importBeautifulSoup ...

  7. vue生成静态html文件_vue单文件组件,如何生成.html文件

    vue-cli项目怎么生成.html文件? 项目使用了element-ui还有自定义的less文件 vue组件: 这是一段文字 ... 生成 ... ... handlerBulder () { co ...

  8. php怎么上传函数,PHP单文件上传原理及上传函数的封装操作示例

    搜索热词 @H_404_0@本文实例讲述了PHP单文件上传原理及上传函数的封装操作.分享给大家供大家参考,具体如下: @H_404_0@表单: @H_404_0@0.PHP: 无标题文档 请选择您要上 ...

  9. vue单文件组件导入导出

    目录分析 打开项目,依次分析下目录结构,项目目录结构如下 项目目录结构如下 单文件组件.vue 目完成后,我们看到src 目录下有一个componets 目录,里面有一个 HelloWorld.vue ...

  10. python解压打开文件过多_让Python在后台自动解压各种压缩文件!

    一.需求描述 编写一个Python程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点: os 模块综合应用 glob 模块综合应用 利用 gzi ...

最新文章

  1. Yii2 使用 Joins 查询
  2. 4.4 I/O性能侦测
  3. oracle 根据分隔符提取,oracle根据分隔符获取字符串
  4. [转]MongoDB c++驱动安装与使用
  5. Synchronized结合Java Object对象中的 wait,notify,notifyAll
  6. 配置FTP服务2(vsftpd 配置虚拟账号)
  7. android开发入门
  8. 后端开发 java_Java后端开发三年,你不得不了解的JVM
  9. RabbitMQ 构建高可靠集群架构
  10. (23)Verilog HDL条件语句:if-else语句
  11. java并发:interrupt进程终止
  12. python面试题之Python 的特点和优点是什么
  13. 开发中,常用到的Eclipse快捷键
  14. 分享MYSQL中的各种高可用技术
  15. 深圳最牛街道办:腾讯华为设总部,百家上市公司年营收超2万亿
  16. 昨天晚上,世界首富马斯克给我上了一课!
  17. 2018秋招暨年度总结
  18. android xposed软重启,Xposed插件安装更新免重启手机方案
  19. 杉德支付php代码实现_杉德ecshop,thinkphp,shopnc在线支付接口,支付插件(payment plugin含源码)...
  20. week3note函数

热门文章

  1. 独家!天才少年 Vitalik:“中国开发者应多关注以太坊!”
  2. 诺基亚品牌手机不久将消失 Stephen Elop回应不是木马
  3. 呼叫系统使用webRTC网页软电话到底好不好?
  4. 计算机二级乙等题目,2015年全国计算机等级考试一级WPS练习题及答案
  5. 2017.2.10考试总结2017冬令营
  6. yiui易柚7 是Android什么版本,康佳YIUI易柚系统升级5.0版本
  7. Ubuntu软件管理工具
  8. cron表达式入门_Sourcehunt:Cron管理,Hackathon入门,PHP-GUI…
  9. 读书笔记 |《小强升职记》
  10. linux开机自启动程序设置方法