文件的打开与关闭

在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件

打开

open(文件路径,访问模式)
f = open('test.txt', 'w')
访问模式:

关闭文件

# 新建一个文件,文件名为:
test.txt f = open('test.txt', 'w')
# 关闭这个文件
f.close()

文件的读写

写数据(write)

使用write()可以完成向文件写入数据
demo: 新建一个文件 file_write_test.py ,向其中写入如下代码:
f = open('test.txt', 'w')
f.write('hello world, i am here!\n' * 5)
f.close()

注意:
如果文件不存在,那么创建;如果存在那么就先清空,然后写入数据

读数据(read)

使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入
num,那么就表示读取文件中所有的数据
demo: 新建一个文件 file_read_test.py ,向其中写入如下代码:
f = open('test.txt', 'r')
content = f.read(5)  # 最多读取5个数据
print(content)
print("‐" * 30)  # 分割线,用来测试
content = f.read()  # 从上次读取的位置继续读取剩下的所有的数据
print(content)
f.close()  # 关闭文件,这个可是个好习惯哦

注意:
如果用open打开文件时,如果使用的"r",那么可以省略   open('test.txt')

读数据(readline

readline只用来读取一行数据。

f = open('test.txt', 'r')
content = f.readline()
print("1:%s" % content)
content = f.readline()
print("2:%s" % content)
f.close()

读数据(readlines

readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行为列表的 一个元素。
f = open('test.txt', 'r')
content = f.readlines()
print(type(content))
for temp in content:print(temp)
f.close()

序列化和反序列化

通过文件操作,我们可以将字符串写入到一个本地文件。但是,如果是一个对象(例如列表、字典、元组等),就无 法直接写入到一个文件里,需要对这个对象进行序列化,然后才能写入到文件里。 设计一套协议,按照某种规则,把内存中的数据转换为字节序列,保存到文件,这就是序列化,反之,从文件的字 节序列恢复到内存中,就是反序列化。
对象---》字节序列 === 序列化
字节序列--》对象 ===反序列化
Python中提供了JSON这个模块用来实现数据的序列化和反序列化

JSON模块
JSON(JavaScriptObjectNotation, JS对象简谱)是一种轻量级的数据交换标准。JSON的本质是字符串。
使用JSON实现序列化
JSON提供了dump和dumps方法,将一个对象进行序列化。
dumps方法的作用是把对象转换成为字符串,它本身不具备将数据写入到文件的功能。
import jsonfile = open('names.txt', 'w')
names = ['zhangsan', 'lisi', 'wangwu', 'jerry', 'henry', 'merry', 'chris']
# file.write(names) 出错,不能直接将列表写入到文件里
# 可以调用 json的dumps方法,传入一个对象参数
result = json.dumps(names)  # dumps 方法得到的结果是一个字符串
print(type(result))  # <class 'str'> # 可以将字符串写入到文件里
file.write(result)
file.close()

dump方法可以在将对象转换成为字符串的同时,指定一个文件对象,把转换后的字符串写入到这个文件里。

import json
file = open('names.txt', 'w')
names = ['zhangsan1', 'lisi', 'wangwu', 'jerry', 'henry', 'merry', 'chris']
# dump方法可以接收一个文件参数,在将对象转换成为字符串的同时写入到文件里
json.dump(names, file)
file.close()

使用JSON实现反序列化

使用loads和load方法,可以将一个JSON字符串反序列化成为一个Python对象。
loads方法需要一个字符串参数,用来将一个字符串加载成为Python对象
import json# 调用loads方法,传入一个字符串,可以将这个字符串加载成为Python对象
result = json.loads('["zhangsan", "lisi", "wangwu", "jerry", "henry", "merry", "chris"]')
print(result)
print(result[2:])
print(type(result))
# <class 'list'>

load方法可以传入一个文件对象,用来将一个文件对象里的数据加载成为Python对象。

import json
# 以可读方式打开一个文件
file = open('names.txt', 'r')
# 调用load方法,将文件里的内容加载成为一个Python对象
result = json.load(file)
print(result)
print(type(result))
file.close()

异常

try...except语句

try...except语句可以对代码运行过程中可能出现的异常进行处理。 语法结构:
try: 可能会出现异常的代码块
except 异常的类型: 出现异常以后的处理语句
示例:
try:f = open('test.txt', 'r')print(f.read())
except FileNotFoundError:print('文件没有找到,请检查文件名称是否正确')

Python读文件异常相关推荐

  1. python 读文件写数据库_python读文件写数据库

    Python 读文件,写数据库 Python 读文件 打开文件 Python读写文件在计算机语言中被广泛的应用,如果你想了解其应用的程序,以下的文章会给你详细的介绍相关内容,会你在以后的学习的过程中有 ...

  2. Python读文件与写文件

    Python读文件与写文件 Date TempHighF TempAvgF TempLowF 2019/1/10 72 65 57 2019/1/11 75 62 48 2019/1/12 67 57 ...

  3. python 读文件数据并画图

    python 读文件数据并画图代码如下: import pandas as pd import matplotlib.pyplot as plt import re import os import ...

  4. Python 读文件

    版权所有,未经许可,禁止转载 章节 Python 介绍 Python 开发环境搭建 Python 语法 Python 变量 Python 数值类型 Python 类型转换 Python 字符串(Str ...

  5. python读文件操作-python 之文件操作

    使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.txt') try ...

  6. python读文件写文件-python 文件读写操作

    读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件 ...

  7. python读文件每一行、并把这行替换-python基础--文件操作实现全文或单行替换

    python修改文件时,使用w模式会将原本的文件清空/覆盖.可以先用读(r)的方式打开,写到内存中,然后再用写(w)的方式打开. 替换文本中的taste 为 tasting Yesterday whe ...

  8. python读文件每一行、并把这行替换-Python按行读文件

    1. 最基本的读文件方法: # File: readline-example-1.py file = open("sample.txt") while 1: line = file ...

  9. Python学习入门基础教程(learning Python)--5.6 Python读文件操作高级

    前文5.2节和5.4节分别就Python下读文件操作做了基础性讲述和提升性介绍,但是仍有些问题,比如在5.4节里涉及到一个多次读文件的问题,实际上我们还没有完全阐述完毕,下面这个图片的问题在哪呢? 问 ...

最新文章

  1. Sanboxie 5.14安装图解
  2. jquery实现跨域
  3. android4.0 系统广播集
  4. ThreadPoolExecutor线程池,shutdown和shutdownNow关闭线程池方式对比,以及确保线程池能够彻底关闭的一种方式
  5. 2、AD工程创建步骤
  6. hadoop临时文件 jar包_hadoop之Mapper/reducer源码分析之二
  7. java生成随机十位数_随机10位字符串生成
  8. 【岗位详情】腾讯广告策略产品经理(北京)
  9. matlab期权风险评估算法,使用 MATLAB 应用程序根据期权价格估算风险中性密度 (risk-neutral density, RND)...
  10. Sql Server实现自动增长
  11. 使用C#调用外部序或是执行DOS命令
  12. Eclipse中,将jar包导入为User Library
  13. IMDB Top500(世界最佳电影500部)
  14. 可道云kodexplorer隐藏免费版按钮及简单修改使用方法
  15. 用ajax实现图片上传 帮你简单快速学会使用
  16. 发现隐患里的自己,原来我是**人!
  17. 优化高德地图加载出现白色
  18. InnoDB怎么解决幻读的?
  19. 银河麒麟SP1解压压缩包后文件名称乱码
  20. codeforces 607B Zuma 区间dp

热门文章

  1. linux之environ(环境变量)
  2. 华为的测试机是什么手机软件,iPhone手机的测距仪你用过吗?华为手机可有类似软件?...
  3. Concrete5建站
  4. 小项目1——后宫选妃
  5. 06-发送短信验证码实现登录功能
  6. 聚美优品与唯品会全方位比较
  7. calc配合rem自适应屏幕宽度
  8. SQL学习之——基本的SELECT
  9. 关于Unicode字符集(http://blog.sina.com.cn/s/blog_4b4409c30100vw9t.html)
  10. 小本生意做什么好赚钱又快,看看这5个小生意,赚钱快!