转自 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)  返回文件信息:

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

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

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

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

  1. >>> 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的文件夹,这里程序如下:

  1. #coding=utf-8
  2. import os,shutil
  3. import datetime
  4.  
  5. DIR = 'D:\\'
  6. FILENAME = 'BeginMan'
  7. PATH = 'D:\\%s' %FILENAME
  8. CONTENT = """
  9. (1):检查下磁盘中(D)是否有文件"BeginMan"的文件夹,如果存在则新建"SuperMan",\n
  10. 在该目录下创建一个名为"readme.txt"的文本文件,写入数据,然后输出文件内容\n
  11. (2):如果文件夹BeginMan存在,则遍历该目录,并输入目录文件\n,
  12. 如果该目录下存在文件,且如果有文件名为b.png,则重命名为boy.png,移到D盘根目录下\n
  13. (3):删除BeginMan目录下所有文件,只保留子目录
  14. ==============================================\n
  15. 时间:%s\n
  16. 作者:%s\n
  17. """ %(datetime.datetime.now(),FILENAME)
  18.  
  19. if FILENAME in os.listdir(DIR):
  20. print u'已经有同名文件:%s' %FILENAME
  21. for obj in os.listdir(PATH):
  22. print u'%s\\%s\n' %(PATH,obj)
  23. try:
  24. if os.path.isfile(u'%s\\%s' %(PATH,obj)):
  25. if obj == 'b.png': #如果含有文件为b.png,则重命名为boy.png,移动到该目录上级
  26. os.rename(u'%s\\%s' %(PATH,obj),u'%s\\%s' %(PATH,'boy.png'))
  27. shutil.move(u'%s\\%s' %(PATH,'boy.png'), 'D:\\')
  28. os.remove(u'%s\\%s' %(PATH,obj))#删除文件,只保留子目录
  29. except Exception,e:
  30. print 'The error:%s' %e
  31. FILENAME = 'SuperMan'
  32. os.mkdir('D:\\%s' %FILENAME) #创建目录
  33. f = open('D:\\%s\\readme.txt'%FILENAME,'w' ) #在该目录下创建文件
  34. f.write(CONTENT) #写入数据
  35. f.close()
  36. f = open('D:\\%s\\readme.txt'%FILENAME,'r' )
  37. 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)  去掉目录路径, 返回文件名:

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

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

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

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

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

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

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

  1. cTime = os.path.getctime(os.getcwd())
  2. c_time = time.localtime(cTime)
  3. 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 文件操作(二)的更多相关文章

  1. Python 常见文件操作的函数示例(转)

    转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ...

  2. 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容

     孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...

  3. 孤荷凌寒自学python第三十三天python的文件操作初识

     孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ...

  4. python中文件操作的六种模式及对文件某一行进行修改的方法

    一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...

  5. Python常见文件操作的函数示例

    # -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...

  6. python的文件操作及简单的用例

    一.python的文件操作介绍 1.文件操作函数介绍 open() 打开一个文件 语法:open(file, mode='r', buffering=-1, encoding=None, errors ...

  7. [转]python file文件操作--内置对象open

    python file文件操作--内置对象open   说明: 1. 函数功能打开一个文件,返回一个文件读写对象,然后可以对文件进行相应读写操作. 2. file参数表示的需要打开文件的相对路径(当前 ...

  8. 员工管理系统+字符编码+Python代码文件操作

    员工管理系统+字符编码+Python代码文件操作 1.员工管理系统 1.1  debug 代码调试 1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)2.之后右键点击debug运行代码 ...

  9. Python :open文件操作,配合read()使用!

    python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...

随机推荐

  1. (转)oracle group by 和order by的关系(在一起使用注意事项)

    转:http://lzfhope.blog.163.com/blog/static/636399220092554045196/ 环境:oracle 10g单单group by 或者order by本 ...

  2. goroutine 需要注意的一个小细节

    虽然goroutine 是并发执行的,但是它们并不是并行运行的.如果不告诉Go 额外的东西,同一时刻只会有一个goroutine 执行.利用runtime.GOMAXPROCS(n) 可以设置goro ...

  3. systemctl命令配置系统服务

    1.systemd的配置文件目录 systemd将daemon执行的脚本视作服务单位(unit),服务依据功能区分时,分为不同的类型(type). 常见的systemd服务类型如下表: 后缀名称    ...

  4. 2019牛客多校第二场A-Eddy Walker

    Eddy Walker 题目传送门 解题思路 因为走过所有的点就会停下来,又因为是从0出发的,所以当n>1时,在0停下来的概率为0,其他的为1/(n-1); 代码如下 #include < ...

  5. 牛客 判断t1树中是否含有与t2树拓扑结构完全相同的子树

    题目链接:https://www.nowcoder.com/practice/5a41ce17e8194e1688aa83a73137f7ee?tpId=101&tqId=33239& ...

  6. Hyperledger:名词解释

    架构概念: VSCC (Validation System Chaincode) Auditability(审计性):在一定权限和许可下,可以对链上的交易进行审计和检查. Block(区块):代表一批 ...

  7. 拾遗:Gentoo 使用笔记

    零.使用 Git 源 mkdir /etc/portage/repos.conf cd !$ vi gentoo.conf [DEFAULT] main-repo = gentoo [gentoo] ...

  8. Java服务定位器模式

    当我们想要使用JNDI查找来定位各种服务时,使用服务定位器设计模式. 考虑到为服务查找JNDI的高成本,所以在服务定位器模式使用缓存技术. 首次需要服务时,服务定位器在JNDI中查找并缓存服务对象. ...

  9. DLL 调用 对话框 以及 如何获取调用dll 应用程序(窗口程序)的窗口句柄

    1.一般创建需要的窗口,转换成相应的窗口类: 声明一个导出函数,来处理窗口的显示,如: CTest test; extern "C" __declspec(dllexport) v ...

  10. jp@gc - Stepping Thread Group (deprecated)

      并发6个用户,线程之前不等待,每隔3秒增加1个用户,间隔时间是2秒,然后并发数增加完成之后,运行60秒,运行完成后,每1秒钟停止2个用户