Python中文件操作和异常处理

news2024/12/24 8:50:18

文章目录

  • 一、文件操作
    • 1.概念
    • 2.文件
    • 3.二进制
  • 二、基本文件操作
  • 三、乱码产生
  • 四、with open() as f
  • 五、代码实现文件复制粘贴
  • 六、try ... except ...
  • 七、代码比较


一、文件操作

1.概念

帮助我们把爬虫抓下来的数据,进行保存。

2.文件

在计算机中,没有pdf,word,txt,csv,image,video,music,excel概念,只有文件的概念。

一个成功的文件 = 成功的文件名 + 成功的文件内容,比如:

歌曲 = 告白气球.mp3 + 歌曲的数据
视频 = 告白气球.mp4 + 视频的数据
图片 = 告白气球.jpg + 图片的数据

3.二进制

在计算机中,所有的图片、视频、音乐都是用二进制数据存储的。

image,video,music 数据 == 二进制数据【binary】

二、基本文件操作

A、新建文件:用法如下

open(文件名, 操作方式[,])

B、操作文件:用法如下

read() or write()

C、保存退出:用法如下

close()

代码示例如下所示:

# 1.新建文件
f = open('Python.txt', 'w')

# 2.操作文件
f.write('hello')

# 3.保存退出
f.close()

说明:代码中的f是电脑内存中虚拟的文件,将内容写入后,通过close()方法把虚拟文件保存到本地

操作方式中的,常用的有三种:

  1. w:只能写字符串 ----> 会覆盖之前数据 ----> 要写encoding=‘utf-8’
  2. a/a+:只能写字符串 -----> 追加写入数据 ----> 要写encoding=‘utf-8’
  3. wb:写入二进制数据 -----> 用于保存图片、音乐、视频 ----> 不能写encoding=‘utf-8’

操作方式中的,有两种:

  1. r:读出来的是字符串 ----> 要写encoding=‘utf-8’
  2. rb:读出来的是二进制(几乎不用) ----> 不能写encoding=‘utf-8’

读字符串这里需要注意,分为两种读取方式:

A、一次性读取全部文件(用的不多):代码示例如下

f = open('古诗.txt', 'r', encoding='utf-8')
data = f.read()
f.close()
print(data)

B、一行一行读取文件(经常用):代码示例如下

f = open('古诗.txt', 'r', encoding='utf-8')
for line in f:
    print(line.strip())

三、乱码产生

如下代码,当写入中文内容时:

# 1.新建文件
f = open('Python.txt', 'w')

# 2.操作文件
f.write('我爱你')

# 3.保存退出
f.close()

运行代码会发现出现乱码,如下图:
在这里插入图片描述

这是因为编码和解码方式不同导致的,解决方案如下模版:

open(文件名, 操作方式, encoding='utf-8')

注意:encoding=‘utf-8’ 只针对字符串的读写操作。

代码示例如下所示:

# 1.新建文件
f = open('Python.txt', 'w', encoding='utf-8')

# 2.操作文件
f.write('我爱你')

# 3.保存退出
f.close()

四、with open() as f

上面我们创建文件到保存文件总公共使用了三步:

A、新建文件:open()
B、读写文件:read() or write()
C、关闭文件:close()

我们会发现很繁琐,需要写3行代码,可以将A和C进行合并,合并之后的代码是with open() as f,中间的B正常写,open()里面也是正常写,代码示例如下:

with open('古诗.txt', 'r', encoding='utf-8') as f:
    for line in f:
        print(line.strip())

五、代码实现文件复制粘贴

需求:实现03.py文本复制,思路如下:

  1. 先把03.py的文件内容读出来
  2. 再把03.py的内容写到新文件

具体代码如下:

# 读
with open('03.py', 'r', encoding='utf-8') as f:
    data = f.read()

# 写
with open('【新】03.py', 'a+', encoding='utf-8') as f:
    f.write(data)

print('文件复制完成')

六、try … except …

该语句是用来处理异常,可以理解为:

try ... except ...   
尝试 ... 期望 ...
尝试 执行xxxx代码 如果xxxx代码报错了 执行期望部分

代码示例如下所示:

# 1、导入请求库
import requests
# 2、准备网址
url = 'https://pic.netbian.com/uploads/allimg/220131/012219-1643563339f065.jpg'
# 3、发送请求
data = requests.get(url).content
# 4、保存
file_name = '小姐姐.jpg'
try:
    with open(file_name, 'wb') as f:
        f.write(data)
    print('下载完成: {}'.format(file_name))
except:
    print('下载失败: {}'.format(file_name))

七、代码比较

如下图所示两组代码:
在这里插入图片描述
在这里插入图片描述

两组代码功能上是一样的,但是一般在开发中用下面这组代码,更加美观,所以之后异常处理用下面的代码:

try:
    pass
except Exception as e:
    pass

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1690219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业大模型带来智能生产新范式

在当前工业行业的发展背景下,大模型技术展现出广阔的应用前景,在提升专业知识的可获取性和传承、优化软件技术的应用、提高数据驱动决策的准确性和效率等方面拥有显著潜力。 ‍‍‍‍‍‍‍‍‍‍据了解,蓝卓“基于supOS工业操作系统的工业大…

【HCIP学习】STP协议

一、STP协议出现背景(Spanning Tree Protocol,生成树协议) 二层环路带来的问题:广播风暴; MAC地址表的震荡; 二、STP定义 stp是二层网络中用于消除环路的协议,通过阻断冗余链路来消除&#xff…

ganglia的安装使用

1.集群内分别安装epel-release依赖,更新yum源 sudo yum -y install epel-release 2.各节点上分别安装gmond sudo yum -y install ganglia-gmond 3.监控节点上安装gmetad和web(这里安装在node1上) sudo yum -y install ganglia-gmetad sudo yum -y insta…

关于阳光雨露外派联想的面试感想

最近在找工作,接到了一个阳光雨露外派联想的面试邀请。说实在的一开始就有不对劲的感觉。想必这就是大厂的自信吧,上就问能不能现场面试,然后直接发面试邀请。这时候我倒是没觉得有啥问题。 然后今天就去面试去了,住的比较偏&…

力扣HOT100 - 138. 随机链表的复制

解题思路: class Solution {public Node copyRandomList(Node head) {if(headnull) return null;Node p head;//第一步,在每个原节点后面创建一个新节点//1->1->2->2->3->3while(p!null) {Node newNode new Node(p.val);newNode.next …

jupyter notebook打开ipynb文件报错500

一开始能打开ipynb文件,但是内核挂掉了,显示如下图的报错 按照网上的教程卸载重装了jupyter 再启动jupyter notebook打开ipynb文件就报错500 网上教程说nbconvert要更新,重装之类的,我都试过了,仍然报错 最后安了个P…

1103 缘分数(测试点4)

solution 测试点4&#xff1a;1 1不符合缘分数定义&#xff0c;但是这个判断能够通过记得排除掉 #include<iostream> #include<cmath> using namespace std; bool judge(int n){int t sqrt(n);if(t * t n) return true;return false; } int main(){int n, m, c…

Deep Residual Learning for Image Recognition--论文笔记

论文笔记 论文来源&#xff1a; Deep Residual Learning for Image Recognition 代码来源 还没上传 1论文摘要的翻译 深度神经网络更难训练。我们提出了一个残差学习框架&#xff0c;以简化比以前使用的网络深度大得多的网络的训练。我们明确地将层重新表述为参考层输入的…

概念艺术3D三维虚拟展览系统让更多人一同领略艺术的无穷魅力

经过多年的技术积累&#xff0c;华锐视点3D云展平台为各位提供的网上3D书画展厅&#xff0c;是一个集逼真视觉体验与沉浸式感官享受于一体的线上艺术殿堂。通过先进的Web3D实时渲染技术&#xff0c;打造全景3D立体场景&#xff0c;让您仿佛置身于实体展厅之中&#xff0c;感受那…

报名倒计时两周|2024 OpenTiny 开源之夏项目直播解读回顾

5月16日&#xff0c;OpenTiny 开源社区成功举办了以《OpenTiny 开源之夏项目解读直播》为主题的直播活动。此次直播中&#xff0c;华为云的高级前端工程师曾令卡、华为云的高级前端工程师伍其和与10位开源之夏技术专家携手组成项目导师团&#xff0c;面向广大开发者一同深入探讨…

QT加载CAD文件(一)QCAD

近期为了加载.dxf格式的文件简单学习了下QCAD和LibreCAD编译和二次开发&#xff0c;QCAD 是一个免费、开源的计算机辅助绘图二维工具, 目前开源的二维CAD有QCAD、LibreCAD等&#xff0c;LibreCAD可以说是QCAD的分支版本。 一、QCAD 官网网址&#xff1a;https://www.qcad.org…

spring boot整合j2cache 关闭二级缓存

我们整合了 j2cache 的项目启动 日志会输出 一级缓存 二级缓存 一级是 EhCacheProvider 二级是 SpringRedisProvider 如果 我们不想用二级缓存 在 j2cache.properties 中 加上 j2cache.12-cache-open配置 值为 true/false true是启用二级缓存 false 是不起用 默认 true 所以 …

低价焕新用户体验生态 京东向上增长通道宽了

5月16日&#xff0c;京东对外发布了其2024年第一季度财报。整体来看&#xff0c;相当不错&#xff0c;营收与净利润双双超预期。一季度&#xff0c;京东集团收入达到2,600亿元人民币&#xff08;约360亿美元&#xff09;&#xff0c;同比增长7.0%&#xff0c;尤其是在持续补贴和…

Golang net/http标准库常用方法(三)

大家好&#xff0c;针对Go语言 net/http 标准库&#xff0c;将梳理的相关知识点分享给大家~~ 围绕 net/http 标准库相关知识点还有许多章节&#xff0c;请大家多多关注。 文章中代码案例只有关键片段&#xff0c;完整代码请查看github仓库&#xff1a;https://github.com/hltfa…

工具分享:VsCode注释神器,koro1FileHeader

他是有官方Wiki的。 https://github.com/OBKoro1/koro1FileHeader/wiki/ 项目在GitHub上开源。以下摘录部分wiki&#xff0c;用作介绍分享在这里插入代码片 如何找到setting.json设置模板 简单的输入命令 打开VSCode命令面板: mac: command p window: ctrl p输入> Ope…

windows查看mysql的版本(三种方法)

方法一&#xff1a;在win r 打开 cmd&#xff0c;在cmd命令状态下&#xff1a;mysql --help 回车即可 方法二&#xff1a;在mysql客户端窗口状态下&#xff1a;输入status并回车即可 在计算机开始菜单搜索以上应用打开即可进入mysql客户端窗口。 方法三&#xff1a;在mys…

[技术报告]InternLM2 Technical Report

摘要 像ChatGPT和GPT-4这样的大型语言模型&#xff08;llm&#xff09;的进化引发了人们对人工通用智能&#xff08;AGI&#xff09;出现的讨论。然而&#xff0c;在开源模型中复制这种进步一直是一个挑战。本文介绍了InternLM2&#xff0c;这是一个开源的大语言模型&#xff…

项目9-网页聊天室2(登录)

0.前端知识储备 Ajax请求中的async:false/true的作用 - front-gl - 博客园 (cnblogs.com) 01.前端页面展示 02.后端代码 2.1 CONTROLLER RequestMapping("/login")public Result login(String username, String password, HttpSession httpSession){User user …

零基础PHP入门(一)选择IDE和配置环境

配置环境 官网下载安装包&#xff0c;windows https://windows.php.net/download#php-8.3 我是下载的最新版&#xff0c;也可以切换其他版本 https://windows.php.net/downloads/releases/archives/ 下载好压缩文件后&#xff0c;双击解压到一个目录 D:\soft\php 复制ph…

指针变量加1为什么地址加了4?

#include <stdio.h> #include <stdlib.h> int main() {int a 1;int* ptr;ptr &a;printf("ptr is: %p\n", ptr);ptr;printf("ptr1 is: %p\n", ptr);return 0; }在上述代码中&#xff0c;首先定义了一个int类型的变量a&#xff0c;和一个i…