Python文件与文件系统(2)——os模块对文件、文件系统操作的支持

三、文件系统操作

  os模块的功能主要包括文件系统部分和进程部分,这里介绍其中与文件系统相关的部分。

  当请求操作系统失败时,os模块返回内置异常 exceptions.OSError 的实例,可以通过 os.error 访问这个类型,OSError的实例有三种属性:

  • errno:操作系统错误的错误代码
  • strerror:描述错误的字符串;
  • filename:操作在哪个文件上出错。

os模块提供的有用属性

>>> os.curdir‘.‘

  表示当前目录的字符串,Unix和Windows上都是“.”。

>>> os.pardir
‘..‘

  表示父目录的字符串,Unix和Windows上都是“..”。

>>> os.defpath
‘.;C:\\bin‘

  程序的默认搜索路径,如果缺乏PATH环境变量时使用。

>>> os.linesep
‘\r\n‘

  文本行的结尾字符串,Unix上是‘\n‘,Windows上是‘\r\n‘。

>>> os.linesep
‘\r\n‘

  分隔文件的扩展名和文件名的分隔符,Unix和Windows上都是“.”。

>>> os.pathsep
‘;‘

  路径列表中用来分隔路径的分隔符,可以参考PATH环境变量,Unix平台上是“:”,Windows平台上是";"。

>>> os.sep
‘\\‘

  路径组成的分割符,在Unix平台上是"/",Windows平台上是"\\"。

os模块提供的与文件系统相关的方法

os.access(path, mode)
# e.g.
>>> os.access("C:\Windows\System32", os.R_OK | os.W_OK)
True

  access()函数判断当前进程的真实用户(组)(real user / real group)是否具有对路径 path 执行所有 mode 中列出的操作的权限,参数mode的可选值包括:

  • os.F_OK:路径指定的文件是否存在;
  • os.R_OK:路径指定的文件是否可读;
  • os.W_OK:路径指定的文件是否可写;
  • os.X_OK:路径指定的文件是否可执行;
os.chdir(path)# e.g.>>> os.chdir("c:/")

  等于 cd 到路径path,即將pwd切換到 path 指定的路径。

os.chmod(path, mode)

  将 path 的访问权限设置为mode ,mode 可以是0或多个 os.R_OK,os.W_OK,os.X_OK,也可是3位8进制的整数(Unix平台),如 0777, 0664等。

os.getcwd()
#e.g.
>>> os.getcwd()
‘c:\\‘

  getcwd()获取当前工作目录的路径。

os.listdir(path)

  listdir(path) 返回一个列表,列表中包括 path 路径下的所有文件和目录,但是不包括“.”和“..”目录。

  listdir()返回的列表是未排序的。

os.mkdirs(path, mode=0777)
os.mkdir(path, mode=0777)

  创建一个目录,此时 path 可能涉及多级目录,mkdirs会创建沿路所有尚不存在的目录,然后设置访问权限;而 mkdir()只创建 path 最右端的 基地址,基地址前面如果存在尚未创建的目录,mkdir()会抛出异常OSError。

  创建失败时两个函数都抛出OSError,当指定的路径已经存在时也抛出相同的异常。

os.remove(path)
os.unlink(path)

  这两个函数删除 path 指定的文件。

os.removedirs(path)

  把 path 中经过的所有目录(要求是空的目录)都删除。

os.rmdir(path)

  删除 path 指定的目录(要求目录为空),删除失败时抛出OSError,例如删除的目录非空。

os.rename(src, dest)

  将文件或目录 src 重命名为 dest。

os.renames(src, dest)

  重命名,但是重命名的过程中会自动创建参数 dest 中所有的尚不存在的中间路径,重命名后会删除 src 中包含的空目录。

os.stat(path)

  返回一个 stat_result 类型的值,该值提供了 10 种关于参数 path 的信息,可以通过对应的属性访问这些信息,例:

1 >>> os.path.getsize(‘test1.py‘)
2 0L
3 >>> os.stat(‘test1.py‘).st_size
4 0L

  这10种关于文件、目录的信息及其对应的属性名称分别为:

属性名 含义
st_mode 访问控制与其他模式位
st_ino I节点的序号
st_dev 设备号
st_nlink 硬链接数
st_uid 属主的UID
st_gid 属主的GID
st_size 大小(单位:字节)
st_atime 最后访问时间(自epoch以来的秒数)
st_mtime 最后修改时间
st_ctime 最后一次状态改变的时间
os.utime(path, times=None)

  设置文件的最后访问和最后修改时间,

  • 如果 times 是None,则utime()使用当前的时间;
  • 如果 times 不为None,则 times 必须是一个二元组——(accessed, modified),即指定最后访问和修改的时间,这里这两个值都要是自 epoch 以来的秒数。
os.walk(top, topdown=True, onerror=None)

  首先,这个函数是一个生成器!用来遍历参数 top 指定的目录

  • 当参数 topdown 为True(默认情形)时,从 top 向其子目录遍历
  • 当参数 topdown 为False时,倒序从 top 目录树的叶节点开始,反向遍历

  参数 onerror :

  • 如果是None,则walk()忽略遍历过程中遇到的一切OSError异常
  • 否则必须是一个函数,以异常OSError的实例为唯一的参数,一旦walk()遇到异常,就将其传递给 onerror()函数,onerror()可以自由定义。

  walk() 每次生成的 item 都是一个三元组——(dirpath, dirnames, filenames),其中:

  • dirpath:当前遍历到的目录的名称;
  • dirnames:列表,包含当前目录的所有直接子目录名(不包括 "." 和 "..");
  • filenames:列表,包含当前目录中的所有文件名;

例:

import os
for dirpath, dirnames, filenames in os.walk("d:\\programs"):
    dirnames[:] = [ d for d in dirnames if not d.startswith(‘.‘) ]
    for name in filenames:
        print os.path.join(dirpath, name)

  该例子将会打印出”d:\\programs“目录下,所有不以 “.” 开头的目录中的所有文件,

  注意在 topdown 为True时,遍历到一层目录时,修改生成得到的dirnames列表,可以影响下一层将要遍历的子目录个数和顺序,比如这里就在遍历时剔除了以“.”开头的目录。

时间: 2024-10-13 07:02:10

Python文件与文件系统(2)——os模块对文件、文件系统操作的支持的相关文章

Python(七)之OS模块

文件系统功能:os模块 python编程时,经常和文件.目录打交道,这是就离不了os模块.os模块包含普遍的操作系统功能,与具体的平台无关.以下列举常用的命令: 目录: os.mkdir('/tmp/dir1') os.makedirs():创建多级目录 os.rmdir() os.removedirs() os.getcwd() os.chdir('/home') os.root() 设置当前进程根目录 os.listdir() 文件: os.stat('/home/zdjiang/get-p

Python学习总结13:os模块

os模块包含普遍的操作系统功能,与具体的平台无关.常用于处理文件和目录这些我们日常手动需要做的操作. 1. os模块函数汇总 1) os.name():判断现在正在实用的平台,Windows 返回 ‘nt'; Linux 返回’posix'     2) os.getcwd():得到当前工作的目录.     3) os.listdir():指定所有目录下所有的文件和目录名.         以列表的形式全部列举出来,其中没有区分目录和文件.     4) os.remove():删除指定文件  

Python基础总结之第九天开始【python之OS模块对目录的操作、以及操作文件】(新手可相互督促)

年薪20万的梦想...         python对文件.目录能做什么?或者说我们需要python替我们做什么?最经常的操作就是对文件的:打开.关闭.读取.写入.修改.保存等等对目录的操作,无非就是:创建目录.删除目录.更改目录名字等等.我们先认识一下OS模块,os模块以及子模块path中包含了获取系统信息.以及对系统进行设置的函数.提供了Python系统和操作系统进行交互的一个接口.我们怎么使用os模块中的函数呢?看下代码: 1 import os #导入os模块 我们输入这样一行代码,就代

Python+Selenium学习笔记6 - os模块

os模块是关于文件/目录方面的 导入语法 import os 相关方法 path.abspath()   用来获取当前路径下的文件 os.path.abspath('checkbox.html')  这句获得的结果是E:/Python-Project/threeCases/checkbox.html,但是不能用浏览器打开. 可以在前面加上file:/// 如下 file_path = 'file:///' + os.path.abspath('checkbox.html')  这句获得的结果是f

Python技术基础知识点:OS模块的应用

1.os模块 对于文件和目录进行处理 目录:就是文件夹 属性: os.name:查看当前系统的类型; 如果是windows ---> nt 如果是max ---> posix os.environ:返回当前系统的环境变量(所有) 函数: os.environ.get():获取指定的某一个环境变量 路径分类: 绝对路径:带盘符根目录的就是绝对路径 相对路径:相对于某个文件(参照物)所得到的一个路径值; 特点:书写的时候不带盘符的 os.getcwd():返回当前正在执行的.py文件所对应的完整路

python全栈开发【补充】复习os模块常用的一些操作

import os # 1.切换路径============= d = os.getcwd() #获取当前的工作路径 os.chdir('D:\\')#目录的切换 print(os.getcwd()) # (切换过去怎么回来呢?再chdir一下就回来了) os.chdir(d) print(os.getcwd()) # 2.执行系统命令============= # system和popen都是执行系统命令的,但是popen比较好用,因为它有返回值 os.system('dir') #显示的是g

python 中文件输入输出及os模块对文件系统的操作

整理了一下python 中文件的输入输出及主要介绍一些os模块中对文件系统的操作. 文件输入输出 1.内建函数open(file_name,文件打开模式,通用换行符支持),打开文件返回文件对象. 2.对打开文件进行读取时,readline()与readlines()的区别在于是否一次性的读取所有的内容,并将每行的信息作为列表中的一个子项. 例如:文件test.txt中 1,3,4 2,35,6 分别用readline与readlines对其进行读取 r=file_object.readline(

python文件处理os模块

一.os模块概述 Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.(一语中的) 二.常用方法 1.os.name 输出字符串指示正在使用的平台.如果是window 则用'nt'表示,对于Linux/Unix用户,它是'posix'. 2.os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径. 3.os.listdir() 返回指定目录下的所有文件和目录名. >>> os.listdir(os.getc

Python os模块--路径、文件、系统命令等操作

os模块包含普遍的操作系统功能. 注意:函数参数path是文件或目录的路径,filename是文件的路径,dirname是目录的路径,路径可以是相对路径,也可绝对路径 常见或重要的函数为加粗字体 os模块: os.name   返回当前操作系统名称('posix', 'nt', 'os2', 'mac', 'ce', 'riscos'),windows为'nt',linux为'posix' os.sep == os.path.sep 返回路径各部分之间的分隔符,linux是'/',windows