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 ...
随机推荐
- Java类加载的时机_4种主动引用会触犯类加载+剩下的被动引用不会触发类的加载
转载自:http://chenzhou123520.iteye.com/blog/1597597 Java虚拟机规范没有强制性约束在什么时候开始类加载过程,但是对于初始化阶段,虚拟机规范则严格规定了有 ...
- Chrome系列 Failed to load resource: net::ERR_CACHE_MISS
在IE/FF下没有该错误提示,但在Chrome下命令行出现如下错误信息: Failed to load resource: net::ERR_CACHE_MISS 该问题是Chrome浏览器开发工具的 ...
- Java对象初始化详解(转)
在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本 ...
- 《JavaScript高级程序设计》心得笔记-----第四篇章
第十六章 1. 跨文档消息传送: postMessage("消息", "发送消息的文档所在域") 2. 拖放事件: 1) 拖动某元素会依次触发:drag ...
- c语言 char*类型作为中间变量将许多字符串保存到一个数组的问题
char*是一个字符串指针,如下面的程序value_作为一个中间变量用来在for循环中scanf输入的值的接收者,然后将value_保存到array中,但是一下程序会出现一个问题就是当你跳出这个函数时 ...
- CS 和 BS 的区别和优缺点
通俗来讲: bs是浏览器(browser)和服务器(server) cs是静态客户端程序(client)和服务器(server) 区别在于,虽然同样是通过一个程序连接到服务器进行网络通讯,但是bs结构 ...
- winform Config文件操作
using System;using System.Collections.Generic;using System.Text;using System.Xml;using System.Config ...
- 关于angularJS与jquery在使用上的一些感悟
最近做的项目中,有同时用到angularJS与jquery两种JS框架. 在使用过程中发现,angularJS的用法更像是面向对象的编程模式.它会要求你定义一个view model,然后所有的页面变化 ...
- 3. opencv进行SIFT特征提取
opencv中sift特征提取的步骤 使用SiftFeatureDetector的detect方法检测特征存入一个向量里,并使用drawKeypoints在图中标识出来 SiftDescriptorE ...
- require.js入门指南(二)
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...