工作中遇到了需要对json文件进行增删内容操作的需要,于是系统性的整理了一下关于文件的基本操作这里的知识点:

结构:新建文件→打开文件→读取文件→关闭文件

一、基本文件操作

1、新建文件(打开文件),需要指定打开文件的方式(“r”, "r+", "w....)

语法:file = open(filename [,mode[,buffering]])

用open关键字,可以新建一个文件

常用的mode有两个,特记忆如下:

①r+:打开一个文件用于读写。文件指针将会放在文件的开头。

②w:打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

PS:r*的文件,原文件必须存在,而w*的文件,原文件可存在,也可不存在,如果原文件存在,则将其覆盖,如果不存在就创建。

2、打开文件时指定编码方式(默认为GBK,报错时需要转换会“utf-8”)

用open()打开文件时,默认为GBK编码,当被打开的文件不是GBK编码时,将抛出异常,所以需要我们在打开文件的时候指定编码方式:

例如,打开采用UTF-8编码保存的notic.txt文件,使用如下代码转化:

file = open('notic.txt',  'r', encoding='utf-8')

3、关闭文件:

打开文件后,一般要关闭文件,忘记关闭的话会有意想不到的问题

file.close()     #file为关闭的对象

4、打开文件使用with语句

好处:可以在with语句执行完毕后,自动关闭文件。

句柄:

with expression as target:

  with-body

其中: expression指定一个表达式,可以是一个函数,可以为open()函数,即打开文件

    target:将读取出来的值赋值给target,是一个变量。

为什么with语句会自动执行打开和关闭动作呢?因为with会触发__enter__和__exit__,__enter__ 和 __exit__ 必须并用:

 class Sample:
def __enter__(self):
print("in __enter__")
return "Foo" def __exit__(self, exc_type, exc_val, exc_tb):
print("in __exit__") def get_sample():
return Sample() with get_sample() as sample:
print("Sample:", sample) #》
in __enter__
Sample: Foo
in __exit__

 

5、读取文件内容:用读取方法的前提是:一定要用‘r’(只读)或者'r+'(读写)打开的文件

5.1:读取全部:file.read(size),如果有指定位置的读取,建议用seek

其中:size可选,指定读取的字符个数,如果为空则全部读取。

5.2: 仅读取一行:file.readline()

需要用循环控制,进行逐行的读取

5.3:读取全部行:file.readlines(),它与read的区别是readlines会返回一个字符串列表,每一行为一个元素。

可以用for语句逐行打印,因为文件过大读取全部会很慢。

6、写入文件

file.write():写入文件具体内容。

对json文件的解析及操作,见链接https://www.cnblogs.com/fish-101/p/11636444.html

python ——文件的操作大全,如with..as的更多相关文章

  1. python文件相关操作

    Python文件相关操作 打开文件 打开文件,采用open方法,会将文件的句柄返回,如下: f = open('test_file.txt','r',encoding='utf-8') 在上面的代码中 ...

  2. Python文件基础操作(IO入门1)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6422270.html 本文出自:[Edwin博客园] Python文件基础操作(IO入门1) 1. pyth ...

  3. python文件高级操作

    python文件高级操作和注意事项等等 文件过大保护 由于read是一次性读取文件所有的内容,如果文件100G,内存就会吃不消,所以推荐使用read(size)一次读取指定字节/字符(根据rb,或者r ...

  4. python 文件读写操作(24)

    以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...

  5. Python 文件读写操作实例详解

    Python提供了必要的函数和方法进行默认情况下的文件基本操作.你可以用file对象做大部分的文件操作 一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前 ...

  6. Python 文件常见操作

    # -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname()  ...

  7. python 文件 IO 操作

    Python 的底层操作 * 其实Python的文件IO操作方法,和Linux底层的差不多 打开 f = open(filename , "r") 后面的 "r" ...

  8. python文件的操作

    文件的操作,归根结底就只有两种:打开文件.操作文件 一.打开文件:文件句柄 = open('文件路径', '模式') python中打开文件有两种方式,即:open(...) 和  file(...) ...

  9. ~~Python文件简单操作~~

    进击のpython Python文件操作 在说Python的文件操作之前 我们可以先思考一个问题 平时我们是怎么对电脑中的文件进行操作的呢? 打开电脑⇨找到文件⇨打开文件⇨读文件⇨修改文件⇨保存文件⇨ ...

随机推荐

  1. 7.2 java 类的定义和使用

    /* * 类的定义: * 类是用来描述现实世界的事物的 * * 事物: * 属性 事物的描述信息 * 行为 事物能够做什么 * * 类是如何和事物进行对应的呢? * 类: * 成员变量 * 成员方法 ...

  2. Array(数组)对象-->splice() 方法

    1.定义和用法 splice() 方法用于添加或删除数组中的元素. 语法: array.splice(index,howmany,item1,.....,itemX) 参数: index:该参数是开始 ...

  3. Linux 下普通用户切换root超级管理员用户的几种方法

    1.在命令行下输入:sudo su ,之后会提示你输入密码 2.此时输入你之前设定的密码既可: 3.但有时会提示你该普通用户不在sudoers文件里 4.此时可以使用以下命令来切换root用户权限:s ...

  4. HBase协处理器加载的三种方式

    本文主要给大家罗列了HBase协处理器加载的三种方式:Shell加载(动态).Api加载(动态).配置文件加载(静态).其中静态加载方式需要重启HBase. 我们假设我们已经有一个现成的需要加载的协处 ...

  5. Git应用详解第八讲:Git标签、别名与Git gc

    前言 前情提要:Git应用详解第七讲:Git refspec与远程分支的重要操作 这一节主要介绍Git标签.别名与Git的垃圾回收机制. 一.Git标签(tag) 1.标签的实质 标签与分支十分相似, ...

  6. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(八)之Polymorphism

    Polymorphism is the third essential feature of an object-oriented programming language,after data ab ...

  7. GitHub 热点速览 Vol.16:化身蒙娜丽莎和乔布斯对话

    摘要:妙趣横生,上周的 GitHub 热点的关键词.无论是让你化身为爱因斯坦开启会议脑暴模式 avatarify,还是和上周人人都是抠图师项目的同门项目 3D 照片修复:3d-photo-inpain ...

  8. L19深度学习中的优化问题和凸性介绍

    优化与深度学习 优化与估计 尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同. 优化方法目标:训练集损失函数值 深度学习目标:测试集损失函数值(泛化性) ...

  9. Daily Scrum 12/17/2015

    Process: Zhaoyang:完成了相册图片的异步加载. Yandong&Dong:   对Azure的体系架构进行学习和相应的编程. Fuchen:   对Oxford计划中的NLP接 ...

  10. N - Remove Adjacent CodeForces - 1321C

    题目大意:删除字符,当一个字符左边或者右边存在一个比它小“1”的字符那么就可以将这个字符删除,问最多能删除多少个字符 思路,:刚开始想的是,对于单调连续的字符,可以直接删除,比如,单点增的字符只保留前 ...