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 time
    
    def 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  sqrt
    
    def 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 False def 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)) # <class 'bytes'>
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 json

def 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()

python文件读写和异常的更多相关文章

  1. python文件读写及形式转化和CGI的简单应用

    一丶python文件读写学习笔记 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode) filename:包含了你要访问的文件名称的字符串值. mo ...

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

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

  3. Python自动化--语言基础4--模块、文件读写、异常

    模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...

  4. Python(3):文件读写与异常

    访问路径: 文件读写必然涉及到文件会放在某个路径下.在python里,可以通过引入os包来实现切换当前访问的路径: # 假设我在 /home/zyq/KiDe/Python/test 文件夹中有一个文 ...

  5. python自动化--语言基础四模块、文件读写、异常

    模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...

  6. Python文件读写及网站显示

    一.关于文件读写的笔记 (一) 文件概述 文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容 文件都是按照2进制进行存储的,但在表现形式上有2种:文本文件和二进制文件. 1. 文本文件 文本 ...

  7. Python 简明教程 --- 24,Python 文件读写

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 过去的代码都是未经测试的代码. 目录 无论是哪种编程语言,IO 操作都是非常重要的部分.I 即Inp ...

  8. Python 文件读写,条件循环(三次登录锁定账号实例)

    通过文件读写,条件循环相关语法,实现三次登录失败则锁定该账号的功能 需求一 """需求描述: 1.输入正确账号,密码,退出程序 2.登录失败,重新输入账号密码 3.同一账 ...

  9. 【学习】python文件读写,用with open as的好处,非常好【转载】

    原文链接:http://www.cnblogs.com/ymjyqsx/p/6554817.html 备注:博主还有很多值得学习的笔记,遇到问题可以拜读,非常感谢博主的总结 读写文件是最常见的IO操作 ...

随机推荐

  1. kubeDNS workflow(service registration and discovery)

    Service discovery In k8s, we usually will more than make an application instance, and also the corre ...

  2. HashMap并发分析

    我们听过并发情况下的HashMap,会出现成环的情况,现在,我就来总结一下它成环的过程. 一言以蔽之,就是他在resize的时候,会改变元素的next指针. 之前在一篇博客里提到,HashMap的re ...

  3. paramiko:实现ssh协议,对linux服务器资源的访问

    介绍 网络传输是遵循协议的,比如SSH,paramiko则是实现了SSHv2协议的一个python库(底层使用的是cryptography).有了paramiko之后,我们便可以通过python使用s ...

  4. 基于Chromium的浏览器已上线通用“显示密码”按钮

    基于Chromium的Edge在日前发布的Canary通道版本中,对用户界面进行了优化调整从而让InPrivate窗口变得更加简洁.在今天获得的版本更新中,微软继续带来了隐私相关的新内容--实现通用的 ...

  5. Windows 10安装Python 2.7和MySQL-python

    1. 安装Python Download Python 2. 安装MySQL-python pip install wheel (应该是可选) pip install mysqlclient==1.3 ...

  6. particlesjs

    今天发现一个粒子动画的插件下个笔记做个备用: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  7. CentOS 7 安装 metasploit-framework

    1 一键安装metasploit-framework apt-get install curl,wgetcurl https://raw.githubusercontent.com/rapid7/me ...

  8. 并发编程的锁机制:synchronized和lock

    1. 锁的种类 锁的种类有很多,包括:自旋锁.自旋锁的其他种类.阻塞锁.可重入锁.读写锁.互斥锁.悲观锁.乐观锁.公平锁.可重入锁等等,其余就不列出了.我们重点看如下几种:可重入锁.读写锁.可中断锁. ...

  9. django初步--+urls解析

    1.静态文件配置: 你在浏览器中输入网址能够有响应的资源返回给你 是因为后端已经提前给你开设该资源的接口,也就意味着你所能 访问到的资源 都是人家事先定义好的. 2.django如何给用户开设资源接口 ...

  10. 线程异步更新UI

    winform程序一般是不允许非主线程操作ui,单可以通过线程与委托的方式并结合Control类提供的BeginInvoke机制进行ui更改 如下,这是更新ui的方法 private void upU ...