文件不存在才能写入

问题

你想像一个文件中写入数据,但是前提必须是这个文件在文件系统上不存在。也就是不允许覆盖已存在的文件内容。

解法

可以在 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):文件不存在才能写入相关推荐

  1. 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素

    <Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...

  2. 《Python Cookbook 3rd》笔记汇总

    文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...

  3. Python Cookbook 3rd Edition Documentation

    Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...

  4. Machine Learning with Python Cookbook 学习笔记 第8章

    Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...

  5. Machine Learning with Python Cookbook 学习笔记 第6章

    Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...

  6. 《Python cookbook》笔记二

    <Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...

  7. Machine Learning with Python Cookbook 学习笔记 第9章

    Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...

  8. 北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)

    前言 本文是对<北理工 嵩天/黄天宇/礼欣 Python语言程序设计>的学习笔记,供自己查阅使用. 文章目录 北理工嵩天Python语言程序设计笔记(目录) 北理工嵩天Python语言程序 ...

  9. 《Python Cookbook 3rd》笔记(5.4):读写字节数据

    读写字节数据 问题 你想读写二进制文件,比如图片,声音文件等等. 解法 使用模式为 rb 或 wb 的 open() 函数来读取或写入二进制数据.比如: # Read the entire file ...

最新文章

  1. Ubuntu Server中怎样卸载keepalived
  2. 四象限运行模式_信息流广告推广怎么选择正确的出价模式?
  3. linux vim 插件管理,linux: vim插件管理
  4. 教程:创建简单的 ETL 包
  5. SQL 查询结果为 XML
  6. NLP语义匹配 | 经典前沿方案整理
  7. javascript 搜索并高亮显示
  8. PostgreSQL视图使用特殊名称作字段时的处理
  9. tm1639c语言程序,51单片机各种汇编延时子程序整理汇总
  10. Linux宝库快讯 | OpenInfra中国日正式确定会议合作方
  11. 使用matlab解决收益和风险问题 数学建模算法与应用
  12. 差分管电路图_DIY一款差分输入的晶体管功放电路图
  13. zzulioj 1819: 加加加!(油) (打表)
  14. SolidWorks迈迪轴生成器使用注意事项
  15. 【联想拯救者R7000】蓝牙和wifi图标不显示问题(已解决)
  16. 客户画像、精准营销与数字化运营
  17. javascript中function前面加(/!/+/-/~的含义
  18. Python 正则表达式(RegEx)
  19. 【软考】--软考是一盘散沙?NO
  20. 安卓中为了获取context的方法和区别(getContext,getActivity,this,mainActivity.this等)

热门文章

  1. python有趣函数_python中有趣的函数
  2. 【转】【MySQL】运行原理(四):重做日志(redo log),回滚日志(undo log),二进制日志(binlog)
  3. 【转】刨根究底字符编码之十一——UTF-8编码方式与字节序标记BOM
  4. Sharepoin学习笔记—架构系列--05 Sharepoint的四种执行模型 2
  5. 25外观模式(Facade Pattern)
  6. 【转】SOAR从概念到落地
  7. SharePoint 2016文档库所在数据库表的说明(文档库数据库)
  8. 一步步编写操作系统 10 cpu的实模式
  9. python操作hive数据库代码_Python连接Hive操作数据库
  10. Python 数据结构之栈的实现