一、文件系统

从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

Python对文件系统的操作是通过os模块实现。提供了访问操作系统功能的接口,但是这个os模块只是一个伪文件系统操作,真正的“模块”如,dos,os2等,这些是直接的底层工作,而Python的os模块只是一种借用操作(个人理解)

os.path模块可对路径进行相关操作。

os、os.path这两个模块与平台、操作系统无关。

二、os模块的文件/目录访问函数

函数 描述
文件处理  
mkfifo()/mknod() 创建命名管道/创建文件系统节点
remove(path)/unlink(path) 删除文件 如:os.remove('d:\\b.png')
rename(old, new)/renames(old, new)  重命名文件:如:os.rename('d:\\b.png','d:\\a.png')
stat(path)  返回文件信息:

>>> os.stat('d:\\a.png')
(33206, 0L, 0, 0, 0, 0, 4088L, 1372746141, 1372734171, 1372746141)
>>> 
symlink()  创建符号链接
utime()   更新时间戳
tmpfile()  创建并打开('w+b')一个新的临时文件,注意不含参数,一旦执行则创建一个临时文件,类型未知

>>> os.tmpfile()#创建临时文件
<open file '<tmpfile>', mode 'w+b' at 0x011D4BF0>
>>> os.rename('d:\\t58g.2','d:\\abc.txt')#改成txt
walk(top, topdown, onerror)  生成一个目录树下所有文件名
目录/文件夹  
chdir(path)  改变当前工作目录
listdir(path)  列出指定目录文件

>>> os.listdir('d:\\')
['a.png', 'abc.txt', 'out.txt', 'Program Files', 'Python25', 'RECYCLER',]>>> 
getcwd()/getcwdu()  返回当前目录:

>>> os.getcwd()
'D:\\Python25'>>> os.getcwdu()u'D:\\Python25
mkdir(path)/makedirs(name, mode) 创建目录/创建多层目录

>>> os.mkdir('D:\\file')

rmdir(path)/removedirs(name)  删除目录/删除多层目录
访问/权限  
access(path, mode)  验证权限目录
chmod(path, mode)  更改权限模式
文件描述符操作  
open()、read()、write()  见上一节
dup()/dup2()  复制

其他的见《Python 核心编程2》9.7节

应用:

(1):检查下磁盘中(D)是否有文件"BeginMan"的文件夹,如果存在则新建"SuperMan",
            在该目录下创建一个名为"readme.txt"的文本文件,写入数据,然后输出文件内容
(2):如果文件夹BeginMan存在,则遍历该目录,并输入目录文件,
            如果该目录下存在文件,且如果有文件名为b.png,则重命名为boy.png,移到D盘根目录下
  (3):删除BeginMan目录下所有文件,只保留子目录

文件系统图如下:

D盘中并没有SuperMan的文件夹,这里程序如下:

#coding=utf-8
import os,shutil
import datetime

DIR = 'D:\\'
FILENAME = 'BeginMan'
PATH = 'D:\\%s' %FILENAME
CONTENT = """
            (1):检查下磁盘中(D)是否有文件"BeginMan"的文件夹,如果存在则新建"SuperMan",\n
            在该目录下创建一个名为"readme.txt"的文本文件,写入数据,然后输出文件内容\n
            (2):如果文件夹BeginMan存在,则遍历该目录,并输入目录文件\n,
            如果该目录下存在文件,且如果有文件名为b.png,则重命名为boy.png,移到D盘根目录下\n
            (3):删除BeginMan目录下所有文件,只保留子目录
            ==============================================\n
            时间:%s\n
            作者:%s\n
            """ %(datetime.datetime.now(),FILENAME)

if FILENAME in os.listdir(DIR):
        print u'已经有同名文件:%s' %FILENAME
        for obj in os.listdir(PATH):
            print  u'%s\\%s\n' %(PATH,obj)
            try:
                if os.path.isfile(u'%s\\%s' %(PATH,obj)):
                    if obj == 'b.png':  #如果含有文件为b.png,则重命名为boy.png,移动到该目录上级
                        os.rename(u'%s\\%s' %(PATH,obj),u'%s\\%s' %(PATH,'boy.png'))
                        shutil.move(u'%s\\%s' %(PATH,'boy.png'), 'D:\\')
                    os.remove(u'%s\\%s' %(PATH,obj))#删除文件,只保留子目录
            except Exception,e:
                print 'The error:%s' %e
        FILENAME = 'SuperMan'
        os.mkdir('D:\\%s' %FILENAME)                    #创建目录
        f = open('D:\\%s\\readme.txt'%FILENAME,'w' )    #在该目录下创建文件
        f.write(CONTENT)                                #写入数据
        f.close()
        f = open('D:\\%s\\readme.txt'%FILENAME,'r' )
        print [lines.strip() for lines in f]            #输出

运行如下:

效果如下:

Python有关文件、文件夹操作小结:

import os,shutil  #要用到这两个模块

创建文件:
1) os.mknod("test.txt") 创建空文件
2) open("test.txt",w)           直接打开一个文件,如果文件不存在则创建文件

创建目录:
os.mkdir("file")                   创建目录

复制文件:
shutil.copyfile("oldfile","newfile")       oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile")            oldfile只能是文件夹,newfile可以是文件,也可以是目标目录

复制文件夹:
shutil.copytree("olddir","newdir")        olddir和newdir都只能是目录,且newdir必须不存在

重命名文件(目录)
os.rename("oldname","newname")       文件或目录都是使用这条命令

移动文件(目录)
shutil.move("oldpos","newpos")   

删除文件
os.remove("file")

删除目录
os.rmdir("dir") 只能删除空目录
shutil.rmtree("dir")    空目录、有内容的目录都可以删

转换目录
os.chdir("path")    换路径

判断目标
os.path.exists("goal")    判断目标是否存在
os.path.isdir("goal")     判断目标是否目录
os.path.isfile("goal")    判断目标是否文件    参考:http://www.cnblogs.com/phoebus0501/archive/2011/01/19/1939646.html

三、os.path

如下表:

 函数 描述
 分隔  
 basename(p)  去掉目录路径, 返回文件名:

os.path.basename('D:\\Project\\python25\\Lib\\a.txt') #a.txt
 dirname(p)  去掉文件名, 返回目录路径:

os.path.dirname(D:\\Project\\python25\\Lib\\a.txt)
#D:\Project\python25\Lib
 join()  将分离的各部分组合成一个路径名:Django项目中常用,

settings.py
DIRNAME = os.path.dirname(__file__)
TEMPLATE_DIRS = (
     os.path.join(DIRNAME, "themes"),
)
 split()  返回 (dirname(), basename()) 元组:

>>>DIRNAME = 'D:\\Project\\python25\\Lib\\a.txt'
>>>os.path.split(DIRNAME)
('D:\\Project\\python25\\Lib', 'a.txt')
 splitdrive()  返回 (drivename, pathname) 元组:

os.path.splitdrive(DIRNAME)
#('D:', '\\Project\\python25\\Lib\\a.txt')
 splitext()  返回 (filename, extension) 元组

os.path.splitext(DIRNAME)
#('D:\\Project\\python25\\Lib\\a', '.txt')
 信息  
 getatime(filename)  返回最近访问时间:

gTime =  os.path.getatime(os.getcwd())
print gTime  #1372836299.77
tTime = time.localtime(gTime)
print time.strftime('%Y-%m-%d %H:%M:%S',tTime)  #2013-07-03 15:24:59
getctime(filename)  返回文件创建时间:

cTime = os.path.getctime(os.getcwd())
c_time = time.localtime(cTime)
print time.strftime('%Y-%m-%d %H:%M:%S',c_time) #2013-04-17 17:27:46
 getmtime(filename)  返回最近文件修改时间
 getsize(filename) 返回文件大小(以字节为单位)
 查询  
 exists()  指定路径(文件或目录)是否存在
 isabs()  指定路径是否为绝对路径
 isdir()  指定路径是否存在且为一个目录
 isfile()  指定路径是否存在且为一个文件
 islink()  指定路径是否存在且为一个符号链接

ismount()

samefile()

指定路径是否存在且为一个挂载点

两个路径名是否指向同个文件

Python入门笔记(16):对文件的操作(2)的更多相关文章

  1. Python入门笔记(15):对文件的操作(1)

    一.文件对象 我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作. <Python 核心编程>上说的很晦涩,这里没有深刻理解到,希望有人能解释给我听. >>> ...

  2. python入门学习:9.文件和异常

    python入门学习:9.文件和异常 关键点:文件.异常 9.1 从文件中读取数据9.2 写入文件9.3 异常9.4 存储数据 9.1 从文件中读取数据 9.1.1 读取整个文件  首先创建一个pi_ ...

  3. golang学习笔记16 beego orm 数据库操作

    golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...

  4. python学习笔记(十)、文件操作

    在前面我们了解到了没得模块,其中有一个模块为fileinput,为文件操作模块,不知道小伙伴们是否还记得? 1 打开文件 要打开文件,可以使用fileinput中的fileinput.input函数进 ...

  5. Ruby小白入门笔记之 <Gemfile 文件>

    因为初学Ruby,四处查资料无果,才来的贴出亲自试过的操作,覆盖整个个人入门笔记博客中,故所有的操作,都以最明了的方式阐述,当你创建完一个新的Rails应用后,你发现JAVA中我们可以编写maven聚 ...

  6. Python入门笔记(23):模块

    一.模块基础 1.模块 自我包含,且有组织的代码片段就是模块 模块是Pyhon最高级别的程序组织单元,它将程序代码和数据封装起来以便重用.实际的角度,模块往往对应Python程序文件. 每个文件都是一 ...

  7. Python学习笔记3-文件的简单操作

    Python中的文件操作 Python中文件打操作离不开两个模块  os 和 shutil os:操作文件.目录: Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话, ...

  8. Python学习笔记之从文件中读取数据

    10-1 Python 学习笔记:在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python 知识,其中每一行都以“In Python you can”打头.将这个文件命名为learnin ...

  9. python编辑修改haproxy配置文件--文件基础操作

    一.需求分析 有查询,删除,添加的功能 查询功能:查询则打印查询内容,如果不存在也要打印相应的信息 删除功能:查询到要删除内容则删除,打印信息. 添加功能:同上. 二.流程图 三.代码实现 本程序主要 ...

随机推荐

  1. RabbitMQ学习笔记3-使用topic交换器

    topic的路由规则里使用[.]号分隔单词,使用[*]号匹配1个单词,使用[#]匹配多个.和多个*. 在下面的例子中: logger.*可以匹配logger.error和logger.warning, ...

  2. 【css】ie6 和 ie7 下 position 与 overflow 的问题

    前几天做的项目中碰到这样一个问题,在 ie6 和 ie7 下,给父元素设置 overflow:hidden 不起作用无法隐藏,后来发现是子元素中有设置 position:relative,如果子元素删 ...

  3. Google 面试题:Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java

    Google面试题 股市上一个股票的价格从开市开始是不停的变化的,需要开发一个系统,给定一个股票,它能实时显示从开市到当前时间的这个股票的价格的中位数(中值). SOLUTION 1: 1.维持两个h ...

  4. 阿里云里面的Linux 系统挂载数据盘

    转自:http://www.cnblogs.com/adjk/p/5112360.html 适用系统:非IO优化+SSD云盘Linux(Redhat , CentOS,Debian,Ubuntu)实例 ...

  5. iOS开发——iOS学习路线

    iOS学习路线 版权声明:欢迎转载,请贴上源地址:http://www.cnblogs.com/iCocos/(iOS梦工厂) 一:自学初步学习路线 二:高级完整学习路线 三:完整知识与能力体系 思维 ...

  6. SymmetricDS 数据库双向同步开源软件入门

    一句话概括该软件:SymmetricDS是一个文件和数据库同步软件,开源的,支持多主复制,同步时过滤和在异构的网络环境中进行数据转换传输.它支持单向和双向上的多个订阅者,异步的数据复制. 以下是从CS ...

  7. DB2解除锁表

    背景 生产环境中,我几乎没有遇到过锁表.多是在开发过程中遇到的,比如团队开发中经常会遇到多个功能访问同一张表的情况.如果有开发人员在这张表加了排它锁,然后又忘记提交事务,那么其他开发人员就要一直等待了 ...

  8. asp.net mvc 配合前端js的CMD模块化部署思想,小思路

    1)布局视图,用于协调普通视图和共享视图,实现js库自由选择引用 @{ //具体页面定义好需要引入的js文件,在这里通过共享视图渲染出来 var jsDefines = ViewBag.JsDefin ...

  9. 那些年我们赚过的外快(POS(移动支付)接口开发)

    老规矩上前戏了.在我写博文"那些年我们赚过的外快"前后算起来大大小小也接了些私活,这次是因为好久没写博客了,趁热分享一下.最近回了离老家近的二线城市成都工作,收入那是下降很多啊,刚 ...

  10. 深入浅出MySQL 数据库开发、优化与管理维护(第2版) -- 读书笔记 -- 基础篇

      1.切换数据库 use blog; 2.显示当前数据库 所有的表. show tables; +----------------+ | Tables_in_blog | +------------ ...