7、Python文件操作
目录
Python文件
1、文件读操作:
2、文件写操作:
3、方法和属性:
读文本文件
写文本文件
写二进制文件
读写JSON文件
Python文件
在Python中实现文件的读写操作其实非常简单,通过Python内置的open
函数,我们可以指定文件名、操作模式、编码信息等来获得操作文件的对象,接下来就可以对文件进行读写操作了。这里所说的操作模式是指要打开什么样的文件(字符文件还是二进制文件)以及做什么样的操作(读、写还是追加)。
具体的如下表所示:
操作模式 | 具体含义 |
---|---|
'r'
|
读取 (默认) |
'w'
|
写入(会先截断之前的内容) |
'x'
|
写入,如果文件已经存在会产生异常 |
'a'
|
追加,将内容写入到已有文件的末尾 |
'b'
|
二进制模式 |
't'
|
文本模式(默认) |
'+'
|
更新(既可以读又可以写) |
1、文件读操作:
with open('input_filename.txt','r') as f:#r为标识符,表示只读df=pd.read_csv(f) print(f.read())
'''
其他标识符:
r: 以只读方式打开文件。
rb: 以二进制格式打开一个文件用于只读。
r+: 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+:以二进制格式打开一个文件用于读写。
'''
2、文件写操作:
#文件的写操作
with open('output_filename.csv', 'w') as f:f.write('hello world')
'''
其他标识符:
w: 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+: 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
'''
3、方法和属性:
f.read([size]) #将文件数据作为字符串返回,可选参数size控制读取的字节数
f.readlines([size]) #返回文件中行内容的列表,size参数可选
f.write(str) #将字符串写入文件
f.writelines(strings) #将字符串序列写入文件
f.close() #关闭文件f.closed #返回布尔值,文件已经被关闭为True,否则为False
f.mode #Access文件打开时使用的访问模式
f.encoding #文件所使用的编码
f.name #文件名
f.newlines #未读取到行分隔符时为None,只有一种行分隔符时为一个字符串,当文件有多种类型的行结束符时,则为一个包含所有当前所遇到的行结束的列表
f.softspace #为0表示在输出一数据后,要加上一个空格符,1表示不加。这个属性一般程序员用不着,由程序内部使用
读文本文件
def main():f = open('致橡树.txt', 'r', encoding='utf-8')print(f.read())f.close()if __name__ == '__main__':main()
- 参数1:“致橡树.txt” 文件名,未指定路径时,当前代码路径,需要路径时(可以使用相对路径或绝对路径)。
- 参数2:文件模式设置为
'r',
(如果不指定,默认值也是'r'
)。 - 参数3:
encoding
参数指定编码,(如果不指定,默认值是None,那么在读取文件时使用的是操作系统默认的编码。
文件不存在或者无法打开,那么将引发异常状况导致程序崩溃。为了让代码有一定的健壮性和容错性,使用Python的异常机制适当的处理。
如下所示:
def main():f = Nonetry:f = open('致橡树.txt', 'r', encoding='utf-8')print(f.read())except FileNotFoundError:print('无法打开指定的文件!')except LookupError:print('指定了未知的编码!')except UnicodeDecodeError:print('读取文件时解码错误!')finally:if f:f.close()if __name__ == '__main__':main()
finally
块的代码不论程序正常还是异常都会执行到(甚至是调用了sys
模块的exit
函数退出Python环境,finally
块都会被执行,因为exit
函数实质上是引发了SystemExit
异常),因此我们通常把finally
块称为“总是执行代码块”,它最适合用来做释放外部资源的操作。
如果不愿意在finally
代码块中关闭文件对象释放资源,也可以使用上下文语法,通过with
关键字指定文件对象的上下文环境并在离开上下文环境时自动释放文件资源,代码如下所示。
def main():try:with open('致橡树.txt', 'r', encoding='utf-8') as f:print(f.read())except FileNotFoundError:print('无法打开指定的文件!')except LookupError:print('指定了未知的编码!')except UnicodeDecodeError:print('读取文件时解码错误!')if __name__ == '__main__':main()
除了使用文件对象的read
方法读取文件之外,还可以使用for-in
循环逐行读取或者用readlines
方法将文件按行读取到一个列表容器中,代码如下所示。
import timedef main():# 一次性读取整个文件内容with open('致橡树.txt', 'r', encoding='utf-8') as f:print(f.read())# 通过for-in循环逐行读取with open('致橡树.txt', mode='r', encoding='utf-8') as f:for line in f:print(line, end='')time.sleep(0.5)print()# 读取文件按行读取到列表中with open('致橡树.txt', mode='r', encoding='utf-8') as f:lines = f.readlines()print(lines)if __name__ == '__main__':main()
写文本文件
写文件时,open
函数时指定好文件名并将文件模式设置为'w'
即可。注意如果需要对文件内容进行追加式写入,应该将模式设置为'a'
。如果要写入的文件不存在会自动创建文件而不是引发异常。
写二进制文件
def main():try:with open('guido.JPEG', 'rb') as fs1:#读取guido.JPEG图片data = fs1.read()print(type(data)) # <class 'bytes'>with open('吉多.JPEG', 'wb') as fs2:#将guido.JPEG图片写入吉多.JPEGfs2.write(data)except FileNotFoundError as e:print('指定的文件无法打开.')except IOError as e:print('读写文件时出现错误.')print('程序执行结束.')if __name__ == '__main__':main()
读写JSON文件
如果希望把一个列表或者一个字典中的数据保存到文件中,将数据以JSON格式进行保存。
JSON格式数据:
{"name": "骆昊","age": 38,"qq": 957658,"friends": ["王大锤", "白元芳"],"cars": [{"brand": "BYD", "max_speed": 180},{"brand": "Audi", "max_speed": 280},{"brand": "Benz", "max_speed": 320}]
}
JSON跟Python中的字典其实是一样一样的,JSON的数据类型和Python的数据类型是很容易找到对应关系的,如下面两张表所示。
JSON | Python |
---|---|
object | dict |
array | list |
string | str |
number (int / real) | int / float |
true / false | True / False |
null | None |
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str | string |
int, float, int- & float-derived Enums | number |
True / False | true / false |
None | null |
我们使用Python中的json模块就可以将字典或列表以JSON格式保存到文件中,代码如下所示:
import jsondef main():mydict = {'name': '骆昊','age': 38,'qq': 957658,'friends': ['王大锤', '白元芳'],'cars': [{'brand': 'BYD', 'max_speed': 180},{'brand': 'Audi', 'max_speed': 280},{'brand': 'Benz', 'max_speed': 320}]}try:with open('data.json', 'w', encoding='utf-8') as fs:json.dump(mydict, fs)except IOError as e:print(e)print('保存数据完成!')try:with open('data.json', 'r+', encoding='utf-8') as f:print("读数据", json.load(f))except IOError as e:print(e)print('读数据完成!')if __name__ == '__main__':main()
json模块主要有四个比较重要的函数,分别是:
dump
- 将Python对象按照JSON格式序列化到文件中dumps
- 将Python对象处理成JSON格式的字符串load
- 将文件中的JSON数据反序列化成对象loads
- 将字符串的内容反序列化成Python对象
如何通过json模块解析JSON数据并显示新闻标题,这个例子使用了天行数据提供的国内新闻数据接口,其中的APIKey需要自己到该网站申请。
import requests
import jsondef main():resp = requests.get('http://api.tianapi.com/guonei/?key=APIKey&num=10')data_model = json.loads(resp.text)for news in data_model['newslist']:print(news['title'])if __name__ == '__main__':main()
参考文章:
Python-100-Days/11.文件和异常.md at master · jackfrued/Python-100-Days · GitHub
7、Python文件操作相关推荐
- 初学Python——文件操作第二篇
前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...
- python关闭读写的所有的文件-Python文件操作:文件的打开关闭读取写入
Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...
- Python文件操作学习总结
Python读写文件 1.open 使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open( ...
- 【Python】学习笔记总结3(Python文件操作)
文章目录 三.Python文件操作 1.打开`open('文件名','打开模式')` 2.写操作 3.读操作 4.With上下文管理对象 小结 案例 5.文件定位 三.Python文件操作 1.打开o ...
- python文件操作实验总结,[干货分享]Python文件操作技巧总结
引言 小伙伴们,今天给大家讲解一下python程序下的文件操作完整技巧梳理,都是笔者总结的干货.通过本文阅读,不仅可以带来生产力提升,也可以开发小脚本为生活带来乐趣. 首先不知道大家对 ...
- 关于python文件操作
关于python文件操作 总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当 ...
- Python文件操作与函数目录
文件操作 python文件操作 函数 Python函数学习--初步认识 Python函数学习--作用域与嵌套函数 Python函数学习--匿名函数 python内置函数 Python函数学习--递归 ...
- python文件操作的方法_python文件操作的方法介绍
文件操作 1.open()函数 open()函数主要用于文件处理,一般分为下面3个过程:1.打开文件 2.操作文件 3.关闭文件 常见的格式示例:f = open('note.txt','r') f. ...
- python打开鼠标指定文件夹_学会python文件操作,鼠标好像没用了,学习python第10天...
电影是人类对未来的向往,在<黑客帝国>中,我们看到了一个数字化的社会,而当你学会python文件操作,你也就离你向往的黑客近一点了,用程序来直接影响电脑上的其他文件,只需要几行代码就搞定. ...
- python对文件操作的相关函数_第六章、Python文件操作
第六章.Python文件操作 Python可以对文件进行查看.创建等功能,可以对文件内容进行添加.修改.删除,且所使用到的函数在Python3.5.x为open,在Python2.7.x同时支持fil ...
最新文章
- Django Request对象3.3
- mobaxterm最多10个链接_短袖、纱裙、泳衣…百元左右夏季童装,我回购最多的10个品牌...
- 什么是回归分析(regression analysis)?有哪些类型的回归分析(regression analysis)?
- 线程wait()和sleep()的区别
- mysql中int型的zerofill参数
- mysql 分类计数器_PHP MySQL映像计数器
- qt建立c++工程导入项目_工程项目经理A、B、C、D四个等级的区别,你知道吗?
- 苹果输了,赔了高通 2 个亿
- oracle批量更新之使用游标进行分批次更新的5种方式及速度比对
- PortMap端口映射器(提供下载资源)
- 乒乓球:浅析业余高手从输球中总结的10条心得!
- 大一java计算圆面积_Java练习题——计算圆的面积
- matlab制作扇形统计图及颜色调配
- 香港马市、田忌赛马?这款游戏 IP 碉堡了
- 简单的WGS84转UTM程序[C++]
- 河南分销系统开发|三级分销跟二级分销的区别是什么?
- 美通企业日报 | 网龙互动白板获德国红点设计奖;芬美意在华开设全球最大食用香精厂...
- python判断语句和循环语句
- python怎么做表格_零基础小白怎么用Python做表格?
- 自动化开发cmd封装: