测试文件是否存在

问题

你想测试一个文件或目录是否存在。

解法

使用 os.path 模块来测试一个文件或目录是否存在。比如:

>>> import os
>>> os.path.exists('/etc/passwd')
True
>>> os.path.exists('/tmp/spam')
False
>>>

你还能进一步测试这个文件时什么类型的。在下面这些测试中,如果测试的文件不存在的时候,结果都会返回 False:

>>> # Is a regular file
>>> os.path.isfile('/etc/passwd')
True>>> # Is a directory
>>> os.path.isdir('/etc/passwd')
False>>> # Is a symbolic link
>>> os.path.islink('/usr/local/bin/python3')
True>>> # Get the file linked to
>>> os.path.realpath('/usr/local/bin/python3')
'/usr/local/bin/python3.3'
>>>

如果你还想获取元数据 (比如文件大小或者是修改日期),也可以使用 os.path 模块来解决:

>>> os.path.getsize('/etc/passwd')
3669
>>> os.path.getmtime('/etc/passwd')
1272478234.0
>>> import time
>>> time.ctime(os.path.getmtime('/etc/passwd'))
'Wed Apr 28 13:10:34 2010'
>>>

讨论

使用 os.path 来进行文件测试是很简单的。在写这些脚本时,可能唯一需要注意的就是你需要考虑文件权限的问题,特别是在获取元数据时候。比如:

>>> os.path.getsize('/Users/guido/Desktop/foo.txt')
Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/usr/local/lib/python3.3/genericpath.py", line 49, in getsizereturn os.stat(filename).st_size
PermissionError: [Errno 13] Permission denied: '/Users/guido/Desktop/foo.txt'
>>>

《Python Cookbook 3rd》笔记(5.12):测试文件是否存在相关推荐

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

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

  2. Python Cookbook 3rd Edition Documentation

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

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

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

  4. 中国大学MOOC实用Python程序设计学习笔记和课后测试1-3周(北京大学)

    中国大学MOOC实用Python程序设计学习笔记和课后测试1-3周(北京大学) 第1周 Python初探 为project设置解释器 保留字 第1周课后测试题 第2周 基本运算.条件分支和输出格式控制 ...

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

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

  6. 《Python cookbook》笔记二

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

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

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

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

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

  9. 《Python cookbook》笔记一

    <Python cookbook> 第一章 数据结构和算法 - *号解压多个变量 - 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError .那么 怎样才能从这个可 ...

最新文章

  1. if __name__ == __main__
  2. python单词意思-python 前面几个单词含义
  3. linux系统vsftpd登陆慢卡怎么办
  4. Windows内核实验004 API调用
  5. 如何开发 Node.js Native Add-on?
  6. 【转载】单片机应用系统断电时的数据保护方法
  7. WordPress后台保护插件 Sabre 和 电子商务插件E - commerce GetShopped
  8. 自学编程的八大误区!克服它们,豁然开朗!
  9. Robotframework--随机选取下拉框的字段值进行搜索
  10. 中美印日四国程序员比较[转自http://www.myexception.cn]
  11. Eclipse Tips(1):增强智能感知
  12. WDF框架下 硬盘的虚拟
  13. VOD崛起《暮光之城》带动电影同步发行模式
  14. 我分析了2837首歌曲,做了个信息检索与信息抽取系统
  15. 每天15分钟,就能轻松告别拖延症
  16. 确定自动驾驶汽车安全评估指标的挑战
  17. Pale Blue Dot/暗淡蓝点------Carl Sagan/卡尔萨根
  18. tp5学习记录:导入前端静态模板
  19. Windos环境下kafka配置启动Zookeeper时,报错:Invalid config, exiting abnormally.
  20. DCOS之k8s的容器监测探针

热门文章

  1. 【转】CT层厚、层间距、层间隔的概念是什么,MRI的层厚、层间距、曾间隔是什么
  2. 【转】ABP源码分析二:ABP中配置的注册和初始化
  3. 【转】.NET框架简介
  4. 【转】掀起Azure AD的盖头来——深入理解Microsoft Graph应用程序和服务权限声明
  5. [你必须知道的.NET]第二十五回:认识元数据和IL(中)
  6. 如何学习(记住)linux命令(常用选项)
  7. 一步步编写操作系统 11 实模式下程序分段的原因
  8. 由浅到深理解ROS(2)
  9. 【LeetCode-SQL每日一练】—— 1179. 重新格式化部门表
  10. 【Python学习】 - Pandas学习 sort_value( ),sort_index( )排序函数的区别与使用