《Python Cookbook 3rd》笔记(5.5):文件不存在才能写入
文件不存在才能写入
问题
你想像一个文件中写入数据,但是前提必须是这个文件在文件系统上不存在。也就是不允许覆盖已存在的文件内容。
解法
可以在 open() 函数中使用 x 模式来代替 w 模式的方法来解决这个问题。比如:
>>> with open('somefile', 'wt') as f:
... f.write('Hello\n')
...
>>> with open('somefile', 'xt') as f: # 'x' : open for exclusive creation, failing if the file already exists
... f.write('Hello\n')
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileExistsError: [Errno 17] File exists: 'somefile'
>>>
讨论
这一小节演示了在写文件时通常会遇到的一个问题的完美解决方案 (不小心覆盖一个已存在的文件)。一个替代方案是先测试这个文件是否存在,像下面这样:
>>> import os
>>> if not os.path.exists('somefile'):
... with open('somefile', 'wt') as f:
... f.write('Hello\n')
... else:
... print('File already exists!')
...
File already exists!
>>>
显而易见,使用 x 文件模式更加简单。要注意的是 x 模式是一个 Python3 对 open() 函数特有的扩展。在 Python 的旧版本或者是 Python 实现的底层 C 函数库中都是没有这个模式的。
《Python Cookbook 3rd》笔记(5.5):文件不存在才能写入相关推荐
- 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素
<Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...
- 《Python Cookbook 3rd》笔记汇总
文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...
- Python Cookbook 3rd Edition Documentation
Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...
- Machine Learning with Python Cookbook 学习笔记 第8章
Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...
- Machine Learning with Python Cookbook 学习笔记 第6章
Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...
- 《Python cookbook》笔记二
<Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...
- Machine Learning with Python Cookbook 学习笔记 第9章
Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...
- 北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)
前言 本文是对<北理工 嵩天/黄天宇/礼欣 Python语言程序设计>的学习笔记,供自己查阅使用. 文章目录 北理工嵩天Python语言程序设计笔记(目录) 北理工嵩天Python语言程序 ...
- 《Python Cookbook 3rd》笔记(5.4):读写字节数据
读写字节数据 问题 你想读写二进制文件,比如图片,声音文件等等. 解法 使用模式为 rb 或 wb 的 open() 函数来读取或写入二进制数据.比如: # Read the entire file ...
最新文章
- Ubuntu Server中怎样卸载keepalived
- 四象限运行模式_信息流广告推广怎么选择正确的出价模式?
- linux vim 插件管理,linux: vim插件管理
- 教程:创建简单的 ETL 包
- SQL 查询结果为 XML
- NLP语义匹配 | 经典前沿方案整理
- javascript 搜索并高亮显示
- PostgreSQL视图使用特殊名称作字段时的处理
- tm1639c语言程序,51单片机各种汇编延时子程序整理汇总
- Linux宝库快讯 | OpenInfra中国日正式确定会议合作方
- 使用matlab解决收益和风险问题 数学建模算法与应用
- 差分管电路图_DIY一款差分输入的晶体管功放电路图
- zzulioj 1819: 加加加!(油) (打表)
- SolidWorks迈迪轴生成器使用注意事项
- 【联想拯救者R7000】蓝牙和wifi图标不显示问题(已解决)
- 客户画像、精准营销与数字化运营
- javascript中function前面加(/!/+/-/~的含义
- Python 正则表达式(RegEx)
- 【软考】--软考是一盘散沙?NO
- 安卓中为了获取context的方法和区别(getContext,getActivity,this,mainActivity.this等)
热门文章
- python有趣函数_python中有趣的函数
- 【转】【MySQL】运行原理(四):重做日志(redo log),回滚日志(undo log),二进制日志(binlog)
- 【转】刨根究底字符编码之十一——UTF-8编码方式与字节序标记BOM
- Sharepoin学习笔记—架构系列--05 Sharepoint的四种执行模型 2
- 25外观模式(Facade Pattern)
- 【转】SOAR从概念到落地
- SharePoint 2016文档库所在数据库表的说明(文档库数据库)
- 一步步编写操作系统 10 cpu的实模式
- python操作hive数据库代码_Python连接Hive操作数据库
- Python 数据结构之栈的实现