文件系统

python的标准库中包括大量工具,可以处理文件系统中的文件,构造和解析文件名,也可以检查文件内容。

pyhton表文件名表示为简单的字符串,另外还提供了一些工具,用来由os.path中平台独立的标准组成部分构造文件名。用os中的listdir()

可以列出一个目录中的内容,或者使用glob由一个模式建立文件名列表。

  1.os.path ---平台独立的文件名管理

  1.1 解析路径

os.path中的第一组函数可以用来将表示文件名的字符串解析为文件名的各个组成部分。有一点很重要,需要认识的这些函数并不要求路径真

实存在;它们只处理字符串。

路径解析依赖于os中定义的一些变量:

os.sep   路径各部分之间的分隔符  "/"

os.extsep   文件名和文件“扩展名”之间的分隔符   "."

os.curdir    当前目录的部分    "."

os.pardir   目录树上一层的部分  ".."

split()函数将路径分解为两个单独的部分,并返回包含这些结果的tuple.

import os.path
for path in ['/one/two/three','/four/five/six','/','.']:
    print '%15s:%s' %(path,os.path.split(path))       #第二个元素是路径的最后一部分,第一个为其它的所有内容

返回:

/one/two/three:('/one/two', 'three')
 /four/five/six:('/four/five', 'six')
              /:('/', '')
              .:('', '.')

  1.2 建立路径

要将多个路径组成部分为一个值,可以使用join()

--------------------------------------------------------------------------------------------------------------

技巧类:

python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。

得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()

返回指定目录下的所有文件和目录名:os.listdir()

函数用来删除一个文件:os.remove()

删除多个目录:os.removedirs(r“c:\python”)

检验给出的路径是否是一个文件:os.path.isfile()

检验给出的路径是否是一个目录:os.path.isdir()

判断是否是绝对路径:os.path.isabs()

检验给出的路径是否真地存:os.path.exists()

返回一个路径的目录名和文件名:os.path.split()     eg os.path.split('/home/swaroop/byte/code/poem.txt') 结果:('/home/swaroop/byte/code', 'poem.txt')

分离扩展名:os.path.splitext()

获取路径名:os.path.dirname()

获取文件名:os.path.basename()

运行shell命令: os.system(command)

读取和设置环境变量:os.getenv() 与os.putenv()

给出当前平台使用的行终止符:os.linesep    Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'

指示你正在使用的平台:os.name       对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'

重命名:os.rename(old, new)

创建多级目录:os.makedirs(r“c:\python\test”)

创建单个目录:os.mkdir(“test”)

获取文件属性:os.stat(file)

修改文件权限与时间戳:os.chmod(file)

终止当前进程:os.exit()

获取文件大小:os.path.getsize(filename)

os.walk  文件遍历

语法:os.walk(top, topdown = True, onerror = None, followlinks = False)

文件结构:

父目录、子目录、二级子目录....

示例代码:

---------------------------------------------------------------

三个参数:分别返回  父目录、所有文件夹(不含路径)、所有文件名字

分析:先从根目录进行遍历,读取根目录的文件夹和文件,以根目录第一个子目录为新的根目录,读取其文件夹和文件.....

  glob包

  glob包最常用的方法只有一个, glob.glob()。

  该方法的功能与Linux中的ls相似,列出所有符合该表达式的文件(与正则表达式类似),将所有文件名放在一个表中返回。所以glob.glob()是一个查询目录下文件的好方法。

  示例:

  >>>import glob

  >>>print glob.glob(r'c:\windows\*.txt')

['c:\\windows\\1.txt'],  ['c:\\windows\\2.txt']

python进阶3--文件系统的更多相关文章

  1. Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令.

    Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令. 一丶socket套接字 什么是socket套接字: ​ ​  ​ 专业理解: socket是应用层与TCP/IP ...

  2. Python进阶:函数式编程实例(附代码)

    Python进阶:函数式编程实例(附代码) 上篇文章"几个小例子告诉你, 一行Python代码能干哪些事 -- 知乎专栏"中用到了一些列表解析.生成器.map.filter.lam ...

  3. Python进阶 - 对象,名字以及绑定

    Python进阶 - 对象,名字以及绑定 1.一切皆对象 Python哲学: Python中一切皆对象 1.1 数据模型-对象,值以及类型 对象是Python对数据的抽象.Python程序中所有的数据 ...

  4. Python进阶-继承中的MRO与super

    Python进阶-继承中的MRO与super 写在前面 如非特别说明,下文均基于Python3 摘要 本文讲述Python继承关系中如何通过super()调用"父类"方法,supe ...

  5. Python进阶 - 命名空间与作用域

    Python进阶 - 命名空间与作用域 写在前面 如非特别说明,下文均基于Python3 命名空间与作用于跟名字的绑定相关性很大,可以结合另一篇介绍Python名字.对象及其绑定的文章. 1. 命名空 ...

  6. python进阶学习笔记(一)

    python进阶部分要学习的内容: 学习目标: 1.函数式编程 1.1,什么是函数式编程 函数式编程是一种抽象计算的编程模式 不同语言的抽象层次不同: 函数式编程的特点: python支持的函数式编程 ...

  7. 【python进阶】详解元类及其应用2

    前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...

  8. 【python进阶】Garbage collection垃圾回收2

    前言 在上一篇文章[python进阶]Garbage collection垃圾回收1,我们讲述了Garbage collection(GC垃圾回收),画说Ruby与Python垃圾回收,Python中 ...

  9. Python进阶 函数式编程和面向对象编程等

    函数式编程 函数:function 函数式:functional,一种编程范式.函数式编程是一种抽象计算机的编程模式. 函数!= 函数式(如计算!=计算机) 如下是不同语言的抽象 层次不同 高阶函数: ...

  10. 【python进阶】深入理解系统进程2

    前言 在上一篇[python进阶]深入理解系统进程1中,我们讲述了多任务的一些概念,多进程的创建,fork等一些问题,这一节我们继续接着讲述系统进程的一些方法及注意点 multiprocessing ...

随机推荐

  1. iOS极光推送的基本使用

    昨天花了一下午的时间研究了下极光推送,也前也是没做过,不知道从何下手!才开始的时候一看官方的SDK感觉好难,不过经过一系列的捣鼓之后,手机收到了推送信息,感觉其实并没有那么难! 1.配置开发证书(得有 ...

  2. Rectangles

    Given two rectangles and the coordinates of two points on the diagonals of each rectangle,you have t ...

  3. interview collect

    1. binary tree inorder traversal 不能用recursive写 (LC原题)2. 比如有个数组F={1,3, 4, 5, 2, 0}, A=3, 那么F[A]=5, F[ ...

  4. JVM学习之常见溢出类型

    Java堆 所有对象的实例分配都在Java堆上分配内存,堆大小由-Xmx和-Xms来调节,sample如下所示: public class HeapOOM { static class OOMObje ...

  5. Android 开发中常用小技巧

    TextView中的getTextSize返回值是以像素(px)为单位的, 而setTextSize()是以sp为单位的. 所以如果直接用返回的值来设置会出错,解决办法是 用setTextSize() ...

  6. Javascript 匀速运动停止条件——逐行分析代码,让你轻松了解运动的原理

    我们先来看下之前的匀速运动的代码,修改了速度speed后会出现怎么样的一个bug.这里加了两个标杆用于测试 <style type="text/css"> #div1 ...

  7. B/S结构和C/S结构

    概念: C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境 ...

  8. MVC自学第四课

    处理表单 前面的列子我们已经把表单提交给了HomeControllers类中的RsvpForm动作方法,只是在这个动作方法内,我们并没有做什么具体的逻辑处理,而是直接返回一个 “Thanks”的视图. ...

  9. ElasticSearch Aggregation

    http://zaiste.net/2014/06/concisely_about_aggregations_in_elasticsearch/

  10. Krita编译和旧版本下载

    Linux For Krita 2.9, David Revoy's guide Building Krita for Cats is the best available! Build Krita ...