Python标准库之os模块
1、删除和重命名文件
import os import string def replace(file, search_for, replace_with): # replace strings in a text file back = os.path.splitext(file)[0] + ".bak" (1) temp = os.path.splitext(file)[0] + ".tmp" try: # remove old temp file, if any os.remove(temp) (2) except os.error: pass fi = open(file) fo = open(temp, "w") (3) for s in fi.readlines(): fo.write(string.replace(s, search_for, replace_with)) (4) fi.close() fo.close() try: # remove old backup file, if any os.remove(back) except os.error: pass # rename original to backup... os.rename(file, back) (5) # ...and temporary to original os.rename(temp, file) # # try it out! file = "samples/sample.txt" replace(file, "hello", "tjena") replace(file, "tjena", "hello")
(1)os.path.splitext(filename)会分解出文件名和扩展名,并保存在一个元组里。而os.path.split(path)则会把路径分解为目录名和文件名,同样保存在元组里。
(2)os.remove(file)会删除file文件。
(3)w表示只写,其他的,r表示只读,r和w读写的是文本。b表示二进制,因而rb表示对二进制文件只读,wb表示对二进制文件只写,读写的二进制文件通常后缀名是dat。
(4)string.replace(s, old, new,maxsplit)会将s字符串中的所有old部分替换成new。其中,maxsplit为可选参数,用来控制替换的个数,举个例子:
>>>import string >>>s = 'abc abcc abccc' >>>string.replace(s, 'c', 'd') 'abd abdd abddd' >>>string.replace(s, 'c', 'd', 2) 'abd abdc abccc'
(5)os.rename(old, new) 会将old文件的文件名替换成new。
2、列出目录下的文件
os模块下的listdir 函数会返回给定目录中所有文件名(包括目录名)组成的列表。
>>>import os >>>for file in os.listdir("samples"): print file sample.au sample.jpg sample.wav ...
os.listdir() 括号内即目录名(可以把目录理解为文件夹)。需要注意,目录名是作为关键字传入的,是一个字符串,因此必须在目录名两边加上引号。另外,如果目录名不在当前的工作目录下,则必须写出该目录的绝对路径,如D:/xx/xx/samples ,否则python将找不到该目录。
3、获取和改变当前工作目录
os.getcwd()可以获取当前的工作目录,os.chdir()则是用来改变当前的工作目录。以我的电脑为例:
>>>import os >>>os.getcwd() 'C:\\Python27' >>>os.chdir('C:/Users/Wu/desktop') >>>os.getcwd() 'C:\\Users\\Wu\\desktop'
(这里插一句:就我个人的体会来说,如果尝试将函数名和它的功能和联系起来,想一想它的全称,就能够很快地记住这个函数的用处。以getcwd为例,它的功能是获取当前的工作目录,那么cwd就应该是current working directory的缩写。)
4、创建和删除多级目录
makedirs和removedirs函数用于创建和删除多级目录。如在桌面创建和删除exercise目录:
>>>os.makedirs('C:/Users/Wu/desktop/exercise') >>>os.removedirs('C:/Users/Wu/desktop/exercise')
需要注意的几点:
1、removedirs只能删除空目录。其删除方式为:若目录为空,则删除,并递归到上一级目录。如若也为空,则继续删除,直到上一级目录非空。
2、makedirs创建的是多级目录,而mkdir只能创建单个目录,即除创建的这一级目录,它的所有上级目录必须都是存在的,如果不存在,则会发生错误。
3、同样的,相较于removedirs,rmdir函数只能删除单个空目录,但它不会递归到上级目录,检查是否为空并删除。
5、获取文件属性
stat 函数可以用来获取一个存在的文件的信息。os.stat(file) 会返回一个类元组对象(stat_result对象, 包含 10 个元素), 依次是st_mode (权限模式),st_ino (inode number),st_dev (device),st_nlink (number of hard links),st_uid (所有者用户 ID),st_gid (所有者所在组 ID ),st_size (文件大小, 字节),st_atime (最近一次访问时间),st_mtime (最近修改时间),st_ctime (Unix下为最近一次元数据/metadata的修改时间, Windows 下为创建时间)。需要注意的两点:
1、(st_inode , st_dev)为 Unix 下的为每个文件提供了唯一标识, 但在其他平台是无意义的。
2、st_atime,st_mtime和st_ctime返回的是一串数字,需要用time模块下的ctime函数才能转化成时间。
举个例子:
>>>import os >>>import time >>>for i in os.stat('C:/Users/Wu/desktop/exercise/hello.py'): print i 33206 0 0 0 0 0 22 1399259008 1399259008 1399259008 >>>time.ctime(1399259008) 'Mon May 05 11:03:28 2014'
Python标准库之os模块的更多相关文章
- (转)python标准库中socket模块详解
python标准库中socket模块详解 socket模块简介 原文:http://www.lybbn.cn/data/datas.php?yw=71 网络上的两个程序通过一个双向的通信连接实现数据的 ...
- Python标准库之核心模块学习记录
内建函数和异常 包括__builtin__模块和exceptions模块 操作系统接口模块 包括提供文件和进程处理功能的os模块,提供平台独立的文件名处理(分拆目录名,文件名,后缀等)的os.path ...
- Python标准库之Sys模块使用详解
sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. 使用sy ...
- Python标准库之subprocess模块
运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python中,我们通过标准库中的subprocess ...
- python - 标准库:subprocess模块
subprocess的目的就是启动一个新的进程并且与之通信. subprocess模块中只定义了一个类: Popen. subprocess.Popen(args, bufsize=0, execut ...
- Python标准库之logging模块
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...
- Python标准库之shelve模块(序列化与反序列化)
shelve模块是一个简单的key,value将内存数据通过文件持久化的模块,可以持久化任何picklel可支持的Python数据格式. 序列化 序列化源代码: import shelve impor ...
- python标准库:ftplib模块
ftplib模块包含了文件传输协议(FTP)客户端的实现. 下面的例子展示了如何登入和获取进入目录的列表,dir函数传入一个回调函数,该回调函数在服务器相应时每一行调用一次.ftplib模块默认的回调 ...
- python标准库之random模块
Python中的random模块用于生成随机数. 下面具体介绍random模块的功能: 1.random.random() #用于生成一个0到1的 随机浮点数:0<= n < 1.0 1 ...
随机推荐
- sublime text配置
安装Package Control: 按”Ctrl”+”`”,在输入框中输入以下代码 Sublime Text3: import urllib.request,os,hashlib; h = '291 ...
- Js中把JSON字符串转换为JSON对象(eval()、new Function())
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...
- OpenFiler安装与基本配置
一. 安装篇 1. 插入安装盘 2. 选择键盘输出 3. 对硬盘进行分区 4. 删除所有数据并重新分区 5. 配置IP地址等信息 ...
- 细说SQL 连接
连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件.WHERE和HAVING子句 也可以包含搜索条件,以进一步筛选连接条件所选的行. ...
- php面向对象的特性:OOP的继承
1.关键字extends 2.PHP只支持单继承,不支持方法重载 /*使用protect 调用字段*/ class Computer{ //父类的字段 protected $_name="联 ...
- WCF之实例模型
PerCall. 为每次调用创建新的服务对象. 内存使用量最小,增加整体的吞吐量. 状态不保存,服务实例及时释放. 单例的状态没有办法保存.所以应使用数据库或者文件或者全局变量来保存服务实例的状态.如 ...
- Oracle11g使用exp导出空表
1.Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出. 2.设置deferred_segment_creation 参数为FALSE后,无论是 ...
- 解决Eclipse中Java工程间循环引用而报错的问题
如果myeclipse 报如下错误 A cycle was detected in the build path of project 如果我们的项目包含多个工程(project),而它们之间又是循 ...
- c语言结构体指针初始化
今天来讨论一下C中的内存管理. 记得上周在饭桌上和同事讨论C语言的崛起时,讲到了内存管理方面 我说所有指针使用前都必须初始化,结构体中的成员指针也是一样 有人反驳说,不是吧,以前做二叉树算法时,他的左 ...
- 自己手写简约实用的Jquery tabs插件(基于bootstrap环境)
一直想改版网站首页的图书展示部分,以前的展示是使用BootStrap的传统的collapse,网页篇幅占用大,也不够美观,操作也相对来说比较麻烦.于是有了自己利用Jquery来做一个图书展示的tabs ...