转载请表明出处:https://www.cnblogs.com/shapeL/p/9141238.html

前提:文中例子介绍test.json内容:

hello
我们
326342

1.文件读取

(1)打开文件open,默认是已读模式打开文件

f = open('../dataconfig/test.json')
print(f.read())
f.close()
输出结果:
hello
鎴戜滑
326342

read():一次性读取文件所有内容

输出结果中出现乱码:需要给open函数传入encoding参数

f = open('../dataconfig/test.json',encoding='utf-8')
print(f.read())
f.close()
输出结果:
hello
我们
326342

(2)read(size):读取部分数据

f = open('../dataconfig/test.json',encoding='utf-8')
print(f.read(3))
f.close()
输出结果: hel

(3)redline():每次读取一行数据,逐行读取文件内容

f = open('../dataconfig/test.json',encoding='utf-8')
data = f.readline()
while data:
print(data)
data = f.readline()
f.close()
输出结果:
hello 我们 326342

输出结果中每一行数据读取之后都会空一行,解决方案:print(data.strip())或者print(data,end='')

(4)readlines():读取文件所有行

f = open('../dataconfig/test.json',encoding='utf-8')
data = f.readlines()
print(data)
print(type(data))
for line in data:
print(line.strip())
f.close()
输出结果:
['hello\n', '我们\n', '']
<class 'list'>
hello
我们
326342

(5)linecache.getline():读取某个特定行数据

import linecache
data = linecache.getline('../dataconfig/test.json',1)
print(data)
输出结果:
hello

总结:不同场景下读取方式选择

如果文件很小,read()一次性读取最方便
如果不能确定文件大小,反复调用read(size)比较保险
如果是配置文件,调用readlines()最方便;redlines()读取大文件会比较占内存
如果是大文件,调用redline()最方便
如果是特殊需求输出某个文件的n行,调用linecache模块
 
2.文件写入
(1)'w'就是writing,以这种模式打开文件,原来文件中的内容会被新写入的内容覆盖掉,如果文件不存在,会自动创建文件

f = open('../dataconfig/test.json','w')
f.write('hello,world!')
f.close()

test.json文件内容:hello,world!

(2)‘’a’就是appendin:一种写入模式,写入的内容不会覆盖之前的内容,而是添加到文件中

f = open('../dataconfig/test.json','a')
f.write('hello,world!')
f.close()

test.json文件内容:

hello
我们
326342hello,world!

3.上述读写文件例子看出,每次读写完之后,都要f.close()关闭文件,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。

但是实际中,文件读写可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证任何时候都能关闭文件,可以使用try-finally来实现(finally内的代码不管有无异常发生,都会执行)

try:
f = open('../dataconfig/test.json', 'r')
print(f.read())
finally:
if f:
f.close()

每次都这样写实在是麻烦,python中的with语句用法可以实现

with open('../dataconfig/test.json',encoding='utf-8') as f:
print(f.read())
输出结果:
hello
我们
326342

打开多个文件进行操作:

with open('../dataconfig/test.json',encoding='utf-8') as f1,open('../dataconfig/test1.json',encoding='utf-8') as f2,open('../dataconfig/test2.json',encoding='utf-8') as f3:
for i in f1:
j = f2.readline()
k = f3.readline()
print(i.strip(),j.strip(),k.strip())

python3:文件读写+with open as语句的更多相关文章

  1. python3:文件读写+with open as语句(转)

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  2. python3 文件读写,编码错误UnicodeDecodeError

    问题:python3 with open文件进行读写,报编码错误 /usr/local/Cellar/python3/3.5.2/Frameworks/Python.framework/Version ...

  3. Python3 文件读写r,w,a

    # Author;Tsukasa ''' f = open('yesterday','w') #文件句柄...注意open分为‘r’读模式,‘w’写模式(d会先创建文件或者覆盖文件),‘a’为追加模式 ...

  4. python3 文件读写操作中的文件指针seek()使用

    python中可以使用seek()移动文件指针到指定位置,然后读/写.通常配合 r+ .w+.a+ 模式,在此三种模式下,seek指针移动只能从头开始移动,即seek(x,0) . 模式 默认 写方式 ...

  5. Python3 文件读写注意事项(指针问题)

    C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe E:/python/day2/op.py Someho ...

  6. python文件读写,以后就用with open语句

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  7. Python3:文件读写

    Python3:文件读写 open f = open('filename','r') # 读模式 f = open('filename','w') # 写模式 f = open('filename', ...

  8. Python3 IO编程之文件读写

    读写文件是最常见的IO操作.python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一个,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序终结操作磁盘, ...

  9. python3的文件读写模式

    任何一种语言,文件的读写都是非常常见的.python的文件读写非常简单,仅仅一个函数open(file也可以,但是我不常用). 先看看官网的解释: open(file, mode='r', buffe ...

随机推荐

  1. H5本地存储二

    众所周知,H5的storage有sessionstorage&localStorage,其中他们的共同特点是API相同 下面直接上代码,storage中的存储与删除: <!DOCTYPE ...

  2. Linux(CentOS 6.5) 下安装MySql 5.7.18 二进制版本粗浅攻略

    鉴于Linux和mysql因不同版本,安装方式也不同,所以在阅读本攻略前,请确保各位同学的版本和我的Linux.MySql 版本一致. 如果不一致,只能参考. 我的版本: Linux CentOS 6 ...

  3. Navicat+Premium+12+破解补丁

    链接:https://pan.baidu.com/s/1BsEWQ__X-RQPuw2ymfxhtg 提取码:j2kb

  4. c++ 容器元素填充(generate)

    #include <iostream> // cout #include <algorithm> // generate #include <vector> // ...

  5. 安装nodejs安装npm安装cpnm安装vue-cli脚手架

    1.为什么用nodejs 因为它是javascript运行环境,不同系统直接运行各种编程语言 是我即将使用vue的推荐开发环境. 选择对应版本,https://nodejs.org/en/downlo ...

  6. 关于python中的 “ FileNotFoundError: [Errno 2] No such file or directory: '……'问题 ”

    今天在学python时,在模仿一个为图片加上图标并移动到指定文件夹的程序时遇到“FileNotFoundError: [Errno 2] No such file or directory: '152 ...

  7. node - web 服务器 、server 服务器

    node 作为服务端 - 基本使用 1. web 服务器 web.html <!DOCTYPE html> <html> <head> <meta chars ...

  8. English trip -- VC(情景课)4 B Parts of the body 身体部位

    xu言: ... Words eye  读音同 I     眼睛 nose 鼻子 ear   耳朵 tooth  牙齿 mouth  嘴 hair 头发 eyebrow  眉毛 cheek  脸颊 n ...

  9. LeetCode--176--第二高的薪水

    问题描述: 编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 ...

  10. LTE时代的定位技术:OTDOA,LPP,SUPL2.0

    LTE时代的定位技术:OTDOA,LPP,SUPL2.0 移动定位技术的发展历程 如今智能手机已经在整个社会普及,数量众多的手机应用成为了人们生活当中不可或缺的一部分.越来越多的手机应用都用到了手机定 ...