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 ...
随机推荐
- C#垃圾回收机制
C#属于托管的面相对象的语言,内存回收机制就是一个代表, C#有一套类似"全自动"的垃圾回收机制,也就是虚拟机会自动来判断执行内存的回收, 我们一般常用的Dispose(),Usi ...
- UILabel自适应高、宽
根据Label和字体大小自适应高度 - (CGFloat)getHeightWithLabel:(UILabel *)label andFontSize:(CGFloat)size { label.n ...
- in C#,编译型常量(const)和运行时常量(readonly)
readonly 关键字与 const 关键字不同. const 字段只能在该字段的声明中初始化. readonly 字段可以在声明或构造函数中初始化. 因此,根据所使用的构造函数, readonly ...
- Revit二次开发-BIM模型导出
最近一个月一直在研究Revit二次开发-BIM模型的导出,在网上找了很多相关资料学习.下面简单介绍一下我最近做的这个BIM模型的导出功能. 开始尝试使用Revit2015的样例程序里提供的读取模型几何 ...
- AMQ学习笔记 - 05. 客户端模板化
概述 客户端编程模型中,大部分的步骤都是相同的.将相同的部分做成模板,将不同的部分预留接口,实现者就只需要针对不同的部分提供实现. 设计 类图 发送方客户端 说明: 基于模板的思想,SendTempl ...
- WCF之契约
消息交换的双方,为了进行消息交换,而定义的一些数据交换规则,称之为契约. 契约只约束规则,不管实现. 契约对客户端和服务器的要求. 服务器:定义和实现契约.构建ServiceHost实例,然后暴露En ...
- 杭电ACM2097--Sky数
这题思路很简单,把10,12,16进制数都按位相加,然后进行比较即可. http://acm.hdu.edu.cn/showproblem.php?pid=2097 <span style=&q ...
- The Name/Origin of Country names
1.Puerto Rico (Spanish for "Rich Port"/富裕的港口/富港 ) 2.HongKong(Chinese for "香港")
- ARM寄存器的8种寻址方式01
一.立即数寻址 操作数由指令本身给出 MOV r0,#0x0F //是所有寻址方式里面速度最快的,但是受到合法立即数的限制 立即数要求以#和$开头 十六进制,#后跟0x:十进制,#后直接加:八进制,# ...
- 一款类似塔防类的保卫羊村游戏android源码
一款类似塔防类的保卫羊村游戏源码,这个游戏很像我们平时玩的塔防游戏的,游戏的源码比较完整的,大家可以修改一下或者添加一些广告就可以上线到应用商店了,而且这个游戏目前已经上线国内的一些应用商店了,360 ...