博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python文件读写和异常
阅读量:5840 次
发布时间:2019-06-18

本文共 3334 字,大约阅读时间需要 11 分钟。

1,文本文件

  • 普通打开

    f.open

    f.close

    def main():    f = None    try:        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()
  • with关键字

    with open as f

    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()
  • 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') as f:        for line in f:            print(line, end='')            time.sleep(0.5)    print()    # 读取文件按行读取到列表中    with open('致橡树.txt') as f:        lines = f.readlines()    print(lines)if __name__ == '__main__':    main()
  • 写入文本文件

    from math import  sqrtdef is_prime(n):     """判断市素数"""     assert  n > 0     for factor in range(2,int(sqrt(n) + 1)):         if n %factor == 0:             return  False     return True if n != 1 else Falsedef main():     filenames = ('a.txt', 'b.txt', 'c.txt')     fs_list = []     try:         for filename in filenames:             fs_list.append(open(filename,'w',encoding='utf-8'))         for num in range(1,10000):             if is_prime(num):                 if num < 100:                     fs_list[0].write(str(num)+"\n")                 elif num < 1000:                     fs_list[1].write(str(num)+"\n")                 else:                     fs_list[2].write(str(num)+'\n')     except IOError as e:         print(e)         print("文件写入错误")     finally:         for fs in fs_list:             fs.close()     print("操作完成")if __name__ == '__main__':    main()

2,二进制文件

def main():    try:        with open('guido.jpg', 'rb') as fs1:            data = fs1.read()            print(type(data))  # 
with open('吉多.jpg', 'wb') as fs2: fs2.write(data) except FileNotFoundError as e: print('指定的文件无法打开.') except IOError as e: print('读写文件时出现错误.') print('程序执行结束.')if __name__ == '__main__': main()

3,json文件

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('保存数据完成!')if __name__ == '__main__':    main()

转载于:https://www.cnblogs.com/mrwuzs/p/10908974.html

你可能感兴趣的文章
C语言-控制语句(循环)
查看>>
[LintCode] 有效的括号序列
查看>>
设置开头剧情的方法
查看>>
eclipse maven 配置
查看>>
SQL 必知必会
查看>>
nginx升级
查看>>
第26件事 精益创业的3个访谈
查看>>
【SSH网上商城项目实战26】完成订单支付后的短信发送功能
查看>>
数据结构的栈和堆和程序中的堆和栈
查看>>
【翻译】热门支持小提示:2013年12月
查看>>
【POI】修改已存在的xls,新添一列后,再保存本文件+获取最大有效行号+获取单元格内容...
查看>>
【Unity探究】物理碰撞实验
查看>>
Android中如何反编译apk文件
查看>>
关于web api 中 日期格式问题解决方案
查看>>
4、总结一下,以软件开发生命周期来说明测试的使用情况。
查看>>
6 地址管理 webapi
查看>>
POJ1088解题报告
查看>>
docker使用
查看>>
构建高性能java程序-使用mapped file创建超大的矩阵
查看>>
grpc与json格式互转
查看>>