java零基础 wavedorm xml neo4j 逻辑端口 clojure ios4 Minjs vue引入组件 bootstrap后台模版 bootstrap后台管理模板 jquery移除子元素 java两个数组合并 ie内核浏览器怎么设置 ab软启动器 kali重启网卡 idea批量替换快捷键 wps文件修复工具下载 安装python python命令行 python读取数据库 java类 java抽象 javase教程 javac python源码下载 tabletpc begininvoke 16进制编辑器 tableau下载 ip切换软件 微信小程序源代码 1667 vscode全局搜索 quickchm 欧洲卡车模拟2存档 lol无限视野 爱奇艺视频下载到电脑 微信昵称特殊字符保存 田字格字体
当前位置: 首页 > 学习教程  > 编程语言

Day11 - 文件和异常

2021/1/28 23:41:27 文章标签:

日期:2021年1月28日 今天是学习Python的第十一天,今天的文件读写操作和C差不多,拓展了JSON。 学习用的教材是GitHub上骆昊编写的《Python - 100天从新手到大师》 一、文件操作 Python中可以使用内置的open函数,指定文件名、操作…


日期:2021年1月28日

今天是学习Python的第十一天,今天的文件读写操作和C++差不多,拓展了JSON。

学习用的教材是GitHub上骆昊编写的《Python - 100天从新手到大师》


一、文件操作

Python中可以使用内置的open函数,指定文件名、操作模式、编码信息等来获得操作文件的对象,对文件进行读写操作。

操作模式具体含义
r读取(默认)
w写入(会先截断之前的内容)
x写入,如果文件已经存在会产生异常
a追加,将内容写入到已有文件的末尾
b二进制模式
t文本模式(默认)
+更新(即可以度又可以写)

二、读写文本文件

使用open时,需要给定参数,分别为文件名、文件操作模式(如不指定默认为r)、通过encoding指定编码(如不指定默认为None,即系统默认编码)

读写操作:

def main():
	# 写操作
	f=open('abc.txt','w',encoding='utf-8') # w模式下如无文件会自动创建文件
	f.write("Hello,world!")
	f.close()
	# 读操作
	f=open('abc.txt','r',encoding='utf-8')
	print(f.read())
	f.close


if  __name__=='__main__':
	main()

💡 如果想以追加方式写入文件,使用a模式。如果不想写close函数,可以使用with关键字,它可以指定文件对象的上下文环境并离开时自动释放文件资源。其使用方法示例如下:

with open('abc.txt','r',encoding='utf-8') as f:
    print(f.read())

r模式下,如果open指定的文件不存在或者无法打开,会造成程序异常,这时候需要采用Python的异常机制来避免出现异常。

def main():
    try: # 异常机制程序标志
        # 运行中可能会异常的代码
        with open('abc.txt', 'r', encoding='utf-8') as f:
            print(f.read())
    # 找不到文件
    except FileNotFoundError:
        print('无法打开指定的文件!')
    # 指定了未知编码
    except LookupError:
        print('指定了未知的编码!')
    # 无法按指定编码解码
    except UnicodeDecodeError:
        print('读取文件时解码错误!')
    finally: # 异常机制结束后运行(总是运行)
        pass

if __name__ == '__main__':
    main()

Python的读写操作除了readwrite外,还支持逐句进行读写,关键字分别为readlinewriteline,和C++用法一样。

三、读写二进制文件

和txt是差不多的,二进制文件在操作模式参数多加一个b,下面是实现文件复制的案例:

def main():
    try:
        with open('a.png', 'rb') as f1:
            data = f1.read()
            print(type(data))  # <class 'bytes'>
        with open('b.png', 'wb') as f2:
            f2.write(data)
    except FileNotFoundError:
        print('指定的文件无法打开.')
    except IOError:
        print('读写文件时出现错误.')
    print('程序执行结束.')


if __name__ == '__main__':
    main()

四、读取JSON文件

JSON是JavaScript Object Notation的缩写,它使用JavaScript语言编写,被广泛的应用于跨平台跨语言的数据交换,因为JSON也是纯文本,任何系统任何编程语言处理纯文本都是没有问题的。

比如,常用的ss代理配置:

{
    "server":"0.0.0.0",
    "server_port":8388,
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"password",
    "timeout":600,
    "method":"aes-256-cfb"
}

拓展:JSON就好比Python中的字典,JSON的数据类型和Python的数据类型可以找到对应关系

JSONPython
objectdict
arraylist
stringstr
number (int / real)int / float
true / falseTrue / False
nullNone
PythonJSON
dictobject
list, tuplearray
strstring
int, float, int- & float-derived Enumsnumber
True / Falsetrue / false
Nonenull

使用Python中的json模块就可以将字典或列表以JSON格式保存到文件中,代码如下所示

import json

def main():
    mydict = {
        'name': 'Paranoid',
        'email': 'administrator@svip886.cn',
        'qq': 297300226,
        '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()

本文链接: http://www.dtmao.cc/news_show_650279.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?