资讯专栏INFORMATION COLUMN

Python中能用三种方式分辨文档存不存在

89542767 / 203人阅读

  原文中具体阐述了Python中能用三种方式分辨文档存不存在,原文中根据实例编码推荐的十分详尽,对大家学习培训或工作具有很强的参照学习培训使用价值,须要的小伙伴们下边伴随着小编就来互相学习了解一下吧


  通常是在读写文件以前,须要分辨文件或目录存不存在,要不然一些处理办法可能会让程序流程出差错。所以尽量在进行任何实际操作以前,先分辨文档存不存在。


  在这里将讲解3种分辨文件或文件夹是不是存有的方式,各自使用os控制模块、Try句子、pathlib模块。


  1.使用os控制模块


  os控制模块里的os.path.exists()方式用以检测文档存不存在。


  判断文件是否存在


  import os
  os.path.exists(test_file.txt)
  #True
  os.path.exists(no_exist_file.txt)
  #False


  判断文件夹是否存在


  import os
  os.path.exists(test_dir)
  #True
  os.path.exists(no_exist_dir)
  #False


  可以看出用os.path.exists()方法,判断文件和文件夹是一样。


  其实这种方法还是有个问题,假设你想检查文件“test_data”是否存在,但是当前路径下有个叫“test_data”的文件夹,这样就可能出现误判。为了避免这样的情况,可以这样:


  只检查文件


  import os
  os.path.isfile("test-data")


  通过这个方法,如果文件”test-data”不存在将返回False,反之返回True。


  即是文件存在,你可能还需要判断文件是否可进行读写操作。


  判断文件是否可做读写操作


  使用os.access()方法判断文件是否可进行读写操作。


  语法:

  os.access(path,mode)


  path为文件路径,mode为操作模式,有这么几种:


  os.F_OK:检查文件是否存在;


  os.R_OK:检查文件是否可读;


  os.W_OK:检查文件是否可以写入;


  os.X_OK:检查文件是否可以执行


  该方法通过判断文件路径是否存在和各种访问模式的权限返回True或者False。


  import os
  if os.access("/file/path/foo.txt",os.F_OK):
  print("Given file path is exist.")
  if os.access("/file/path/foo.txt",os.R_OK):
  print("File is accessible to read")
  if os.access("/file/path/foo.txt",os.W_OK):
  print("File is accessible to write")
  if os.access("/file/path/foo.txt",os.X_OK):
  print("File is accessible to execute")


  2.使用Try语句


  可以在程序中直接使用open()方法来检查文件是否存在和可读写。


  语法:


  open()


  如果你open的文件不存在,程序会抛出错误,使用try语句来捕获这个错误。


  程序无法访问文件,可能有很多原因:


  如果你open的文件不存在,将抛出一个FileNotFoundError的异常;


  文件存在,但是没有权限访问,会抛出一个PersmissionError的异常。


  所以可以使用下面的代码来判断文件是否存在:


  try:
  f=open()
  f.close()
  except FileNotFoundError:
  print("File is not found.")
  except PermissionError:
  print("You don't have permission to access this file.")


  其实没有必要去这么细致的处理每个异常,上面的这两个异常都是IOError的子类。所以可以将程序简化一下:


  使用try句子作出判断,解决全部出现异常比较简单和典雅的。并且相较于其他不用引进别的外界控制模块。


  3.使用pathlib模块


  pathlib模块在Python3版本是内设控制模块,但在Python2中也是需要独立组装第三方控制模块。


  使用pathlib必须要先应用目标文件夹来建立path目标。此途径能是文件夹名称或文件目录途径。


  查验途径存不存在


  path=pathlib.Path("path/file")
  path.exist()


  检查路径是否是文件


  path=pathlib.Path("path/file")
  path.is_file()

  综上所述,这篇文章就给大家介绍完毕了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128730.html

相关文章

  • Redux 登录状态判断的一些实践

    摘要:高阶函数验证中间件验证验证之所以用三种方式一起是因为高阶函数在性能调优的时候并不是特别容易。总结高阶函数适合用在子控件需要确定权限后渲染中间件适合无状态页面中的登录状态判断验证,使用范围就比较狭窄了。 最近一直在写一个React、Redux的前端项目,登录状态验证这一块还是比较头疼的。 我的实践下有三种方式来验证用户登录状态,目前我选择用三种方式一起用在项目里面。 Redux高阶函数...

    isLishude 评论0 收藏0
  • 拒绝js阻塞—defer、async作用和区别分析

    摘要:阻塞原理浏览器内核可以分成两部分渲染引擎或者和引擎。等引擎运行完毕,浏览器又会把控制权还给渲染引擎,继续和的构建。执行时,解析暂停。从加载完成立即执行来看,模式执行顺序与写的顺序无关,不保证执行顺序。 js阻塞原理 浏览器内核可以分成两部分:渲染引擎(Layout Engine 或者 Rendering Engine)和 JS 引擎。早期渲染引擎和 JS 引擎并没有十分明确的区分,但随...

    wuaiqiu 评论0 收藏0
  • 如何给列表降维?sum()函数的妙用

    摘要:上个月,学习群里的同学问了个题目,大意可理解为列表降维,例子如下想得到结果原始数据是一个二维列表,目的是获取该列表中所有元素的具体值。不经意间,函数的注意事项,竟把其它的进阶内容都联系起来了。小小的函数,竟成为学习之路上的一个枢纽。 上个月,学习群里的 S 同学问了个题目,大意可理解为列表降维 ,例子如下: oldlist = [[1, 2, 3], [4, 5]] # 想得到结果:...

    Channe 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<