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模块的更多相关文章

  1. (转)python标准库中socket模块详解

    python标准库中socket模块详解 socket模块简介 原文:http://www.lybbn.cn/data/datas.php?yw=71 网络上的两个程序通过一个双向的通信连接实现数据的 ...

  2. Python标准库之核心模块学习记录

    内建函数和异常 包括__builtin__模块和exceptions模块 操作系统接口模块 包括提供文件和进程处理功能的os模块,提供平台独立的文件名处理(分拆目录名,文件名,后缀等)的os.path ...

  3. Python标准库之Sys模块使用详解

    sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. 使用sy ...

  4. Python标准库之subprocess模块

    运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python中,我们通过标准库中的subprocess ...

  5. python - 标准库:subprocess模块

    subprocess的目的就是启动一个新的进程并且与之通信. subprocess模块中只定义了一个类: Popen. subprocess.Popen(args, bufsize=0, execut ...

  6. Python标准库之logging模块

    很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...

  7. Python标准库之shelve模块(序列化与反序列化)

    shelve模块是一个简单的key,value将内存数据通过文件持久化的模块,可以持久化任何picklel可支持的Python数据格式. 序列化 序列化源代码: import shelve impor ...

  8. python标准库:ftplib模块

    ftplib模块包含了文件传输协议(FTP)客户端的实现. 下面的例子展示了如何登入和获取进入目录的列表,dir函数传入一个回调函数,该回调函数在服务器相应时每一行调用一次.ftplib模块默认的回调 ...

  9. python标准库之random模块

    Python中的random模块用于生成随机数. 下面具体介绍random模块的功能: 1.random.random() #用于生成一个0到1的 随机浮点数:0<= n < 1.0 1 ...

随机推荐

  1. return,exit,die

    return:代表退出某个函数,但是函数体外的语句仍然需要执行. exit:退出程序,但是不从内存中卸载,exit其实也是可以输出语句的,加一个括号即可. die:退出程序,并且从内存中卸载.

  2. Jmail发送邮件与带附件乱码解决办法

    Jamil发送邮件的具体用法: 首先,我们要从网上下载Jamil.dll的组件,这个网上很多,然后添加引用using jmail,然后再本机或者服务器上注册一下 将jmail.dll拷贝到服务器的sy ...

  3. C语言知识总结(3)

    数组 数组的特点: 只能存放一种类型的数据,比如int类型的数组.float类型的数组 里面存放的数据称为“元素” 初始化方式 ] = {, , }; ] = {,}; , , }; ] = {[]= ...

  4. 通过js判断手机访问跳转到手机站

    第一种方法: <script> ){ //pc //window.location.href="电脑网址"; }else{ //shouji window.locati ...

  5. SpringMvc入门五----文件上传

      知识点: SpringMvc单文件上传 SpringMvc多文件上传   这里我直接演示多文件上传,单文件的上传就不说了,不过代码都是现成的. 效果预览:   DEMO图:     添加文件上传j ...

  6. jQuery 简单漂亮的 Nav 导航菜单

    自己写的一个简单的导航菜单,先看效果: 鼠标悬浮时菜单项向上移动成蓝底白字,点击之后底部会有蓝条表示当前选中项. 页面代码,菜单的每一项都是一个 div ,其中包括一个 ul 用来放置显示文字等,另一 ...

  7. HIV T2

    甲学者将HIV病毒的遗传物质彻底水解后得到A.B.C三种化合物,乙学者将组成T2噬菌体的遗传物质彻底水解后得到了A.B.D三种化合物.你认为C.D两种化合物分别指的是 A.尿嘧啶.胸腺嘧啶 B.胸腺嘧 ...

  8. jQuery 实现网页图片动态游走,碰到边框反弹

    学学jQuery,实现个小功能练练手 需要用到定时器 html代码如下 <html> <head> <title></title> <script ...

  9. .NET中的 枚举

    我理解的枚举就是编程中约定的一个"可选值":例如QQ的在线状态,分别有    在线,Q我吧,隐身,忙碌等等...我觉得这就是一个枚举. 1.普通枚举 1) 实例 public en ...

  10. activiti搭建(二)与Spring集成

    转载请注明源地址:http://www.cnblogs.com/lighten/p/5876773.html 本文主要讲解如何将Activiti和Spring框架集成,再过一段时间将会将一个基础的de ...