文件:操作系统问应用程序或用户提供一种操作硬盘的虚拟单位

  --文件时操作系统提供的虚拟单位

  --应用程序或用户对文件的读写操作都是向操作系统发送指令

  --文件包括文本文件和二进制文件

为何要用文件:文件对应硬盘空间,如果需要永久保存数据,必须用到文件

如何用文件:绝对路径:从根目录开始

      相对路径:相对于当前执行文件所在文件夹

文件的操作:

  1.打开文件:f=open("绝对路径或相对路径", mode="读或写模式",encoding='utf-8')

        --该种打开方式必须配合close()函数使用

        with open("绝对路径或相对路径", mode="读或写模式",encoding='utf-8') as f:

        --该模式打开不需要close()函数

  文件的打开模式: 'r' 默认只读,如果文件不存在,报错

          'w' 覆盖写模式,文件不存在则创建

          'a' 追加写模式,文件不存在则创建

          'b' 二进制文件模式

          't' 文本文件模式,默认

          '+'  与r/w/a  同时使用,在原功能基础上同时增加读写功能

  2.文件内容的读取:

          f.read(): 读入全部内容

          f.readline() 读入一行内容

          f.readlines()读入全部内容,分行处理

  3.文件写入:(w - 覆盖写模式, a- 追加写模式)

        f.write(s)  向文件写入一个字符串或字节流

        f.writelines(lines) lines为一个列表

        f.seek(offset)  offset( 0- 文件开头, 1-当前位置, 2- 文件结尾)

  4.文件修改的两种方式:

   方式一:1. 以读的方式打开源文件

       2.将文件内容一次性全读入内存,在内存完成修改

       3.以写的方式打开源文件,然后将修改的结果一次写入源文件

  总结:优点是在文件修改过程中硬盘只存在一份数据、缺点是浪费内存

例:

with open('b.txt',mode='rt',encoding='utf-8') as read_f:

  mag=read_f.read()

  new_msg=mag.replace('a', 'b')

with open('b.txt', mode='wt', encoding='utf-8') as write_f:

  write_f.write(new_mag)

   方式二:1.以读的方式打开源文件,以写的方式打开一个临时文件

       2.读取源文件的一行内容到内存中,将修改的结果写入临时文件,循环往复直到改完

      3.删除源文件,将临时文件名该为源文件名

   总结:优点:同一时间在内存中只有一行内容,更节省内存,缺点:文件修改过程中硬盘存两份数据 

import os
with open('b.txt', mode='rt', encoding='utf-8') as read_f,\
open('.b.txt.swap', mode='wt', encoding='utf-8') as write_f:
for line in read_f:
write_f.write(line.replact('a', 'b') os.remove('b.txt')
os.rename('.b.txt.swap', 'b.txt')

  5. 指针 seek () 函数: 移动以字节为单位

    0(默认):参照文件开头(强调:只有0模式下既可以使用 t 模式,又可以使用 b 模式)

    1  : 参照指针当前所在位置(只能在b 模式下使用)

    2 : 参照文件末尾 (只能在 b 模式下使用)

   例: f.seek(-5,2)  将指针先移到末尾在向左移动5个字节

   强调: 只有在 t 模式下 read(n) 中的 n 代表字符个数,除此之外 都代表 n 个字节

       

        

文件操作_26th,Nov 2018的更多相关文章

  1. 廖雪峰js教程笔记14 file文件操作

    在HTML表单中,可以上传文件的唯一控件就是<input type="file">. 注意:当一个表单包含<input type="file" ...

  2. [Linux]目录x权限对文件操作的影响

    问题 我们常使用linux以下命令 cd 进入目录 ls 列出目录中的文件 或者直接打开目录中的文件 以上操作对于目录权限位的设置来说,是有一定迷惑性的,如表格所示   cd进入该目录 cd进入该目录 ...

  3. python3csv与xlsx文件操作模块(csv、xlsxwriter)

    一.csv模块实现csv文件操作 1.CSV介绍 CSV,全称为Comma-Separated Values,它以逗号分隔值,其文件以纯文本形式存储表格数据,该文件是一个字符序列,可以由任意数目的记录 ...

  4. Python学习—基础篇之文件操作

    文件操作 文件操作也是编程中需要熟练掌握的技能,尤其是在后台接口编写和数据分析过程中,对各种类型的文件进行操作,获取文件信息或者对信息进行存储是十分重要的.本篇博客中将主要对常见的文本格式文件和Exc ...

  5. Python 自学基础(一)——元组 字典 文件操作

    格式化输出 name = input("请输入你的名字:") age = input("请输入你的年龄:") msg = ''' -------------in ...

  6. Nodejs学习笔记(4) 文件操作 fs 及 express 上传

    目录 参考资料 1. fs 模块 1.1 读取文件fs.readFile 1.2 写入文件fs.writeFile 1.3 获取文件信息fs.stat 1.4 删除文件fs.unlink 1.5 读取 ...

  7. 013.Python的文件操作

    一 文件操作 fp = open("打开的文件",mode="模式选择",encoding="编码集") open 函数 返回一个文件io对 ...

  8. 字符编码和python文件操作

    字符编码和文件操作 目录 字符编码和文件操作 1. 字符编码 1.1 什么是字符编码 1.2 字符编码的发展史 1.2.1 ASCII码 1.2.2 各国编码 1.2.3 Unicode 1.3 字符 ...

  9. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

随机推荐

  1. Easy Graphics Engine vs2015使用

    vs2017: 下载 https://pan.baidu.com/s/1qWxAgeK 里面的 “ege19.01_vs2017 (推荐, 修正win10 1809 上无法正常运行的问题).zip”  ...

  2. Linux系统vi或者vim编辑器中如何显示行号

    设置行号很简单 我们要到vi或者vim编辑器的命令模式下,输入set number :set number 按下回车就显示行号了 那么怎么关闭行号呢? 很简单,我们只要再到vi或者vim编辑器的命令模 ...

  3. JDK中关于BIO,NIO,AIO,同步,异步介绍

    在理解什么是BIO,NIO,AIO之前,我们首先需要了解什么是同步,异步,阻塞,非阻塞.假如我们现在要去银行取钱: 同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写) ...

  4. Cordova+Vue快速搭建Hybrid App

    前言 最近项目迭代需要开发一个app,由于项目组其他系统前端技术栈都是Vue,所以自己在需求评估的时候就初步敲定了Cordova+Vue的前端架构,后来查阅了不少资料,也掉了不少坑,这里总结一下,也算 ...

  5. jenkins之从0到1利用Git和Ant插件打war包并自动部署到tomcat(第一话):初次启动jenkins,输入给定密码后登录失败问题解决

    Jenkins是一个持续集成平台,它能够从git等源码管理服务器拉取代码.打包并发布到tomcat等中间件,只要配置好相关插件,就可以做到项目的自动化构建.部署,不论是对开发来说监控代码质量,还是对测 ...

  6. redis安装配置:inux系统为centOS 64位

    下载Redis-4.0.6.tar.gz包 我下载的到自己的默认目录/root/software/下 1. 然后解压到这个目录下 /usr/local/src/ 解压命令: tar -xzf redi ...

  7. 20181013xlVba年级成绩报表

    Public Sub 高一成绩报表() Application.ScreenUpdating = False Application.DisplayAlerts = False Application ...

  8. Post四种Content-Type

    application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了.浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 app ...

  9. Django ModelForm 组件的应用

    ModelForm组件的应用 ModelForm 组件的创建: 1.创建一个类,该类继承 forms.ModelForm  2.大致组成部分 class ModelNameModelForm(form ...

  10. vue.js用select实现省,市,提交后,默认显示省,市信息

    <select v-model="citys" name="cityVal" @change="schoolName(citys)"& ...