设为首页 收藏本站
查看: 851|回复: 0

[经验分享] Python入门笔记(16):对文件的操作(2)

[复制链接]

尚未签到

发表于 2015-4-27 09:17:28 | 显示全部楼层 |阅读模式
一、文件系统
  从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
  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()#创建临时文件

>>> 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')
DSC0000.png




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目录下所有文件,只保留子目录
  文件系统图如下:
DSC0001.png
  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]            #输出
  运行如下:
DSC0002.png
  效果如下:
DSC0003.png
DSC0004.png
DSC0005.png
  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.iyunv.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()


  指定路径是否存在且为一个挂载点
  两个路径名是否指向同个文件



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-61022-1-1.html 上篇帖子: BoooLee pyretoolkit 下篇帖子: Python源码剖析-深度探索动态语言核心技术.PDF 电子书下载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表