转自 http://www.cnblogs.com/BeginMan/p/3169020.html

一、文件系统

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

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学习(15)-对文件的操作(二)的更多相关文章

  1. Python学习日记之文件读取操作

    Python内置了文件读写的函数open,read 用法示例: open('/home/root/files.txt ') 在打开文件后,操作完成后可以使用close()关闭文件,但比较好的文件读写方 ...

  2. 记录我的 python 学习历程-Day08 文件的操作

    文件操作的初识 用 python 代码对文件进行各种操作. 基本构成: 文件路径:path 打开方式:读.写.追加.读写.写读-- 编码方式:utf-8 / gbk / gb2312-- f = op ...

  3. 《转》Python学习(14)-对文件的操作(一)

    转自 http://www.cnblogs.com/BeginMan/p/3166644.html 一.文件对象 我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作. <Python ...

  4. python学习_数据处理编程实例(二)

    在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...

  5. 【Python学习之六】文件操作

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 一.文件的打开与关闭 使用open函数,可以打开一 ...

  6. Python学习笔记015——文件file的常规操作之一(文本文件)

    1 什么是文件 文件是用于数据存储的单位 文件通常用来长期保存数据 读写文件是最常见的I/O操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件的功能都是由操作系统提供的,一般而言,操 ...

  7. Python学习:7.文件操作

    文件操作 我们曾将听过一个问题,将大象放入冰箱分为三步:1.打开冰箱门,2.将大象放进去,3.关上冰箱门.今天我们要讲的Python文件操作的步骤就像将大象放入冰箱的步骤一样. 使用Python操作文 ...

  8. python学习笔记之文件操作(三)

    这篇博客小波主要介绍一下python对文件的操作 对文件的操作主要分为三步: 1.打开文件获取文件的句柄,句柄也是文件描述符 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件,是小波随写的周杰伦 ...

  9. python学习第十八天 --文件操作

    这一章节主要讲解文件操作及其文件读取,缓存,文件指针. 文件操作 (1)文件打开:open(filepath,filemode) filepath:要打开文件的路径 filemode:文件打开的方式 ...

随机推荐

  1. 第三百五十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—利用开源的scrapy-redis编写分布式爬虫代码

    第三百五十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—利用开源的scrapy-redis编写分布式爬虫代码 scrapy-redis是一个可以scrapy结合redis搭建分布式爬虫的开 ...

  2. 查看 共享内存 的命令 ipcrm、ipcs

    ipcrm 命令 移除一个消息对象.或者共享内存段,或者一个信号集,同时会将与ipc对象相关链的数据也一起移除.当然,只有超级管理员,或者ipc对象的创建者才有这项权利啦 ipcrm用法 ipcrm ...

  3. JDBC异常

    异常处理允许我们以受控的方式处理异常情况,而不是直接退出程序,例如程序定义的错误. 发生异常时可以抛出异常.术语“异常”表示当前的程序执行停止,并且被重定向到最近的适用的catch子句.如果没有适用的 ...

  4. perl学习(二)正则表达式

    模式分组: /fred+/会匹配freddd这样的 /(fred)+/会匹配fredfredfred这样的 /(fred)*/则会匹配abcdef任意的 圆括号同时也使得重新使用某些字符串成为可能.反 ...

  5. Unity-------------------------关于GUI绘制的编程

    转载:在这篇文章中我将给读者介绍Unity中的图形用户界面(GUI)编程.Unity有一个非常强大的GUI脚本API.它允许你使用脚本快速创建简单的菜单和GUI. 简介 Unity提供了使用脚本创建G ...

  6. autofac 实例生命周期

    转自逆心博客园 autofac 实例生命周期 实例生命周期决定在同一个服务的每个请求的实例是如何共享的. 当请求一个服务的时候,Autofac会返回一个单例 (single instance作用域), ...

  7. CI框架伪静态化配置

    CI框架伪静态化配置 伪静态化,即:去掉入口的index.php, 在url后面加上 .html 后缀 CI默认的rewrite url中是类似这样的,例如你的CI根目录是在/CodeIgniter/ ...

  8. 绚丽而实用的jQuery/CSS3应用及源码

    HTML5加入WEB以后,网页世界就变得丰富绚丽起来了,但是我们在项目应用中,不仅需要绚丽的动画效果,而且更需要有实用的价值.今天分享的一些jQuery/CSS3应用不仅绚丽,而且还比较实用,如果感兴 ...

  9. windows下更改鼠标滚轮方向

    本来鼠标滚轮的方向无所谓“正确”与否(win下和mac下方向相反),只要习惯即可.但从win下切换到mac后,本来是想把鼠标方向调成跟win下一致,结果这么一反转,连多指手势的“左右”都反了,苹果,算 ...

  10. windows xp\2003 之上的操作系统多启动(多系统)引导

    概要技术: 微软自windows vista以来的操作系统引导bootmgr是真的很强大,只是因为其全底层的命令操作,且不友好的命令帮助让人望而却步! 基本技术概要提点: boot.ini 支持:xp ...