zoukankan      html  css  js  c++  java
  • python进阶七_文件操作(二)

    二.一些特殊用法

    1.从现有文件中获取信息(os,stat)

    当我们读取一个文件之后,如果还想知道关于这个文件的一些属性信息,怎么得到?在python中,我们可以使用os和stat模块来获取基本信息,来看一个例子:


    当然,当我们打开一个“文件”后,不清楚到底是不是文件,还是目录,我们可以这么判断:


    2.目录操作(os, fnmatch , glob)

    1.列出一个目录下的所有内容


    2.创建一个目录


    3.删除一个目录(假设该目录下存在文件)

           我们在刚刚创建的new文件夹下新建一个txt文档,试着删除这个文件夹new:


    这个时候报错了,错误显示是目录非空,不能删除,查了一下,发现有很多方法,找了个最简洁的,试了一下:


    发现文件夹不在了,这就是我们后面要说到的shutil模块。

    4.当我们要处理某一类型的文件时该怎么办?

    这个时候就可以用模块”fnmatch”和”glob”模块了。我们先从glob说起,现我们在F:\coding\python目录下新建了3个目录,分别为new1,new2,new3,在这三个目录下,我们又分别新建了一些其他文件,现在我们就来看看glob的便捷之处:


    经过上面的实践之后,又有一个问题了,假如我们需要对某个目录下的不同类型文件进行操作时,该怎么办呢?看下面的例子:


    5.当我们需要获取一个目录下的所有文件,怎么办?

           首先我们能想到的当然是glob,递归搜索应该就可以了,如下:


           但是本着偷懒的原则,还是觉得代码繁琐,于是查了一下,果然还有一个os.walk方法,os.walk()返回一个3元素tuple:当前路径,子文件夹名称,文件列表,看一下示例:


    6.除了字符串以外,我们需要传递其他数据怎么办?(pickle)

           在python中还有很多其他类型,如list、tuple、dictionary和其它对象,如何转换呢?在Python中,你可以使用Pickle来完成。你可以使用Python标准库中的“pickle”模块完成数据编组。
    下面,我们来编组一个包含字符串和数字的list:


    这里,我们根据实验很容易就能联想到对象序列化,那么pickle到底能不能支持任意自定义对象的序列化呢?我们试一试:


    果然,这与我们的猜测是一致的。








  • 相关阅读:
    android-layout-finder 在线生成findViewById
    Android 广播机制
    Android Service随笔
    新博客地址(https://minxin.github.io)
    angr学习(四)
    angr学习(三)
    angr学习(二)
    angr学习(一)
    android studio NDK开发方案
    python虚拟机
  • 原文地址:https://www.cnblogs.com/ainima/p/6331119.html
Copyright © 2011-2022 走看看