(原创)Python文件与文件系统系列(2)——os模块对文件、文件系统操作的支持
os模块的功能主要包括文件系统部分和进程管理部分,这里介绍其中与文件系统相关的部分。
当请求操作系统执行操作失败时,os模块抛出内置异常 exceptions.OSError 的实例,可以通过 os.error 访问这个类型,OSError的实例有三种属性:
- errno:操作系统错误的错误代码
- strerror:描述错误的字符串;
- filename:操作在哪个文件上出错。
1. os模块提供的有用属性:
1.1 curdir
>>> os.curdir
'.'
表示当前目录的字符串,Unix和Windows上都是“.”。
1.2 pardir
>>> os.pardir
'..'
表示父目录的字符串,Unix和Windows上都是“..”。
1.3 defpath
>>> os.defpath
'.;C:\\bin'
程序的默认搜索路径,如果缺乏PATH环境变量时使用。
1.4 linesep
>>> os.linesep
'\r\n'
文本行的结尾字符串,Unix上是'\n',Windows上是'\r\n'。
1.5 extsep
>>> os.extsep
'\r\n'
分隔文件的扩展名和文件名的分隔符,Unix和Windows上都是“.”。
1.6 pathsep
>>> os.pathsep
';'
路径列表中用来分隔路径的分隔符,可以参考PATH环境变量,Unix平台上是“:”,Windows平台上是";"。
1.7 sep
>>> os.sep
'\\'
路径组成的分割符,在Unix平台上是"/",Windows平台上是"\\"。
2. os模块提供的与文件系统相关的方法
2.1 access(path, mode)
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:路径指定的文件是否可执行;
2.2 chdir(path)
os.chdir(path)
# e.g.
>>> os.chdir("c:/")
等于 cd 到路径path,即將pwd切換到 path 指定的路径。
2.3 chmod(path, mode)
os.chmod(path, mode)
将 path 的访问权限设置为mode ,mode 可以是0或多个 os.R_OK,os.W_OK,os.X_OK,也可是3位8进制的整数(Unix平台),如 0777, 0664等。
2.4 getcwd()
os.getcwd()
#e.g.
>>> os.getcwd()
'c:\\'
getcwd()获取当前工作目录的路径。
2.5 listdir(path)
os.listdir(path)
listdir(path) 返回一个列表,列表中包括 path 路径下的所有文件和目录,但是不包括“.”和“..”目录。
listdir()返回的列表是未排序的。
2.6 mkdirs(path, mode), mkdir(path, mode)
os.mkdirs(path, mode=0777)
os.mkdir(path, mode=0777)
创建一个目录,此时 path 可能涉及多级目录,mkdirs会创建沿路所有尚不存在的目录,然后设置访问权限;而 mkdir()只创建 path 最右端的 基地址,基地址前面如果存在尚未创建的目录,mkdir()会抛出异常OSError。
创建失败时两个函数都抛出OSError,当指定的路径已经存在时也抛出相同的异常。
2.7 remove(path), unlink(path)
os.remove(path)
os.unlink(path)
这两个函数删除 path 指定的文件。
2.8 removedirs(path)
os.removedirs(path)
把 path 中经过的所有目录(要求是空的目录)都删除。
2.9 rmdir(path)
os.rmdir(path)
删除 path 指定的目录(要求目录为空),删除失败时抛出OSError,例如删除的目录非空。
2.10 rename(src, dest)
os.rename(src, dest)
将文件或目录 src 重命名为 dest。
2.11 renames(src, dest)
os.renames(src, dest)
重命名,但是重命名的过程中会自动创建参数 dest 中所有的尚不存在的中间路径,重命名后会删除 src 中包含的空目录。
2.12 stat(path)
os.stat(path)
返回一个 stat_result 类型的值,例如:
>>> mode = os.stat("test1.py")
>>> type(mode)
<type 'nt.stat_result'>
>>>
>>> mode
nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0, st_nlink=0, st_uid=0, st_gid=
0, st_size=22L, st_atime=1439467351L, st_mtime=1439543082L, st_ctime=1439467351L
)
可以看到stat()函数返回的 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 | 最后一次状态改变的时间 |
2.13 utime(path, times)
os.utime(path, times=None)
设置文件的最后访问和最后修改时间,
- 如果 times 是None,则utime()使用当前的时间;
- 如果 times 不为None,则 times 必须是一个二元组——(accessed, modified),即指定最后访问和修改的时间,这里这两个值都要是自 epoch 以来的秒数。
2.14 walk(top, topdown, onerror)
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列表,可以影响下一层将要遍历的子目录个数和顺序,比如这里就在遍历时剔除了以“.”开头的目录。
(原创)Python文件与文件系统系列(2)——os模块对文件、文件系统操作的支持的更多相关文章
- 【python基础语法】OS模块处理文件绝对路径,内置的异常类型、捕获、处理(第9天课堂笔记)
import os """ 通过文件的路径去打开文件 相对路径:相对当前的工作路径去定位文件位置 .:代表当前路径 ..:代表上一级路径(父级路径) 绝对路径:相对于电脑 ...
- 原创】Java并发编程系列2:线程概念与基础操作
[原创]Java并发编程系列2:线程概念与基础操作 伟大的理想只有经过忘我的斗争和牺牲才能胜利实现. 本篇为[Dali王的技术博客]Java并发编程系列第二篇,讲讲有关线程的那些事儿.主要内容是如下这 ...
- Python基础总结之第九天开始【python之OS模块对目录的操作、以及操作文件】(新手可相互督促)
年薪20万的梦想... python对文件.目录能做什么?或者说我们需要python替我们做什么?最经常的操作就是对文件的:打开.关闭.读取.写入.修改.保存等等对目录的操作,无非就是 ...
- Python正则表达式re模块和os模块实现文件搜索模式匹配
☞ ░ 前往老猿Python博文目录 ░ 因测试需要,需要提供一个可以指定目录搜索符合条件的文件名函数,搜索时可以通过*(星号)匹配0-n个字符,?(问号)匹配任意1个字符,可以指定多个文件类型,每个 ...
- Python os模块之文件操作
基本概念:C:\\haoguo.txt 路径: C:\\ 文件名: haoguo 后缀名:.txt 1. 文件名与后缀分离 2. 路径与文件分离 3. 获取当前路径 4. 文件名与后缀合并 5. 路径 ...
- python 之 序列化与反序列化、os模块
6.6 序列化与反序列化 特殊的字符串 , 只有:int / str / list / dict 最外层必须是列表或字典,如果包含字符串,必须是双引号"". 序列化:将Python ...
- os模块、文件压缩 、匹配文件后缀名:fnmatch glob
一.os模块 os模块:是python是系统交互的模块 import os # 0平台信息的一些操作 python是夸平台的,所以内部兼容了不同的平台 1. os.name # 操作系统 nt是win ...
- python学习第五十一天os模块的用法
os模块故名思意就是操作系统模块,该模块提供很多容许你的程序与操作系统直接交互的功能. 1,得到当前工作目录 os.getcwd() 2, 返回指定目录下的所有文件和目录名 os.listdir() ...
- python学习笔记:sys、os模块
os模块:负责程序与操作系统的交互,提供了访问操作系统底层的接口; sys模块:负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境. --os 常用方法-- ...
随机推荐
- Shell编程中Shift的用法
Shell编程中Shift的用法 位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的shif ...
- .map文件的作用以及在chorme下会报错找不到jquery-1.10.2.min.map文件,404 的原因
source map文件是js文件压缩后,文件的变量名替换对应.变量所在位置等元信息数据文件,一般这种文件和min.js主文件放在同一个目录下. 比如压缩后原变量是map,压缩后通过变量替换规则可能会 ...
- druid(德鲁伊)数据源的使用和配置 阿里出品
pom.xml <dependency> <groupId>com.alibaba</groupId> <artifactId>drui ...
- BZOJ-1699 Balanced Lineup 线段树区间最大差值
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 41548 Accepted: 19514 Cas ...
- P1391 走廊泼水节
时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 话说,中中带领的OIER们打算举行一次冬季泼水节,当然这是要秘密进行的,绝对不可以让中中知道.不过中中可是老 ...
- bzoj1069 SCOI2007 最大土地面积
1069: [SCOI2007]最大土地面积 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2560 Solved: 983 Description ...
- PL/0编译器(java version) - MainFrame.java
1: /* 2: * To change this license header, choose License Headers in Project Properties. 3: * To chan ...
- 我对 impress.js 源码的理解
源码看了两天,删掉了一些优化,和对 ipad 的支持,仅研究了其核心功能的实现,作以下记录. HTML 结构如下: <!doctype html> <html lang=" ...
- Bootstrap 新手学习笔记——布局组件
1.字形图标: <button type="button" class="btn btn-primary btn-lg" style="font ...
- DS_Store 是什么文件
转自:http://blog.csdn.net/benbenxiongyuan/article/details/9010653 在xcode中,进行svn管理的时候,会发现一个DS_Store文件,这 ...