python 文件与目录操作


Posted in Python onDecember 24, 2008

1)os.path
1.1 os.path.isabs(path) 是否是绝对路径
1.2 os.path.isfile(path)
1.3 os.path.isdir(path)
1.4 os.path.islink(path) 是否是链接;但如果系统不支持链接,返回False
1.5 os.path.ismount(path) 是否为驱动器;但是很不幸的是在python 3.0中这是个不能运行的函数。
原函数如下:

# Is a path a mount point? Either a root (with or without drive letter)
# or an UNC path with at most a / or \ after the mount point.

def ismount(path):
"""Test whether a path is a mount point (defined as root of drive)"""
unc, rest = splitunc(path)
seps = _get_bothseps(p)
if unc:
return rest in p[:0] + seps
p = splitdrive(path)[1]
return len(p) == 1 and p[0] in seps

其错误之处是显而易见的。不知道这个函数为什么这么写,在windows平台,可以如下完成该功能
def ismount(path):
p = splitdrive(path)[1]
if len(p) > 0:
return(False)
else:
return(True)

其他平台没有对应的机器,不知道具体情形。
1.6 os.path.abspath(path) 返回绝对路径
1.7 os.path.dirname(path)
1.8 os.path.exists(path)
1.9 os.path.lexists(path) 和exists函数一样
1.10os.path.getsize(path)
1.11os.path.getctime(path) 返回浮点数的系统时间,在类Unix系统上是文件最近更改的时间,
在Windows上是文件或目录的创建时间
1.12os.path.getmtime(path) 文件或目录最后更改的时间
1.13os.path.getatime(path) 文件或目录最后存取的时间
1.14os.path.samefile(path1,path2) 如果2个路径指向同样的文件或目录,返回True(Windows上不可用)
1.15os.path.split(path) 分割路径,如果path是目录,返回[parentName, dirName];
如果path是文件,返回[dirName, fileName]
1.16os.path.splitext(path) 分割路径,如果path是目录,返回[parentName, ''];
如果path是文件,返回[dirName+fileName, 文件后缀]

2)fileinput
简单使用
import file
input for line in fileinput.input():
process(line)

2.1 fileinput.input([files[, inplace[, backup[,mode[,openhook]]]]])
创建一个fileinput的实例,如果files为空,则指向控制台获得输入;如果file为'-',同样转向控制台获得输入。
默认情况,文件以text mode打开,如果需要其他格式,则需要指定。
2.2 fileinput.filename() #只有当读入第一行之后,该值才被赋值
2.3 fileinput.fileno()
2.4 fileinput.lineno()
2.5 fileinput.filelineno()
2.6 fileinput.isfirstline()
2.7 fileinput.isstdin()
2.8 fileinput.nextfile()
2.9 fileinput.close()

3)glob
可以使用简单的方法匹配某个目录下的所有子目录或文件,用法也很简单。
3.1 glob.glob(regression) 返回一个列表
3.2 glob.iglob(regression) 返回一个遍历器
这个模块简单好用,强力推荐。

4)linecache
看名字就知道了,属于缓存类的
4.1 linecache.getline(filename,lineno[, module_globals]) #获得filename的第lineno行
4.2 linecache.clearcache()
4.3 linecache.checkcache([filename]) #检查更新

5)shutil 重点推荐的袄,好东西,支持文件集合的复制和删除操作
5.1 shutil.copyfileobj(fsrc, fdst[, length])
5.2 shutil.copyfile(src, dst) #上面2个都是文件的复制
5.3 shutil.copymode(src, dst) #除了复制内容,还会复制其他的一些信息,例如作者
5.4 shutil.copystat(src, dst) #除了复制内容,还会复制存取时间的信息
5.5 shutil.copy(src, dst) #复制文件到dst,当dst为目录时,复制到子目录
5.6 shutil.copy2(src, dst) #相当于先copy再copystat
5.7 shutil.copytree(src, dst[, symlinks=False[, ingore=None]]) #复制文件夹树,注意,dst文件夹必须是不存在的
5.8 shutil.rmtree(path[, ignore_erros[, onerror]])
5.9 shutil.move(src,dst)

def copytree(src, dst, symlinks=False): 
names = os.listdir(src) 
os.makedirs(dst) 
errors = [] 
for name in names: 
srcname = os.path.join(src, name) 
dstname = os.path.join(dst, name) 
try: 
if symlinks and os.path.islink(srcname): 
linkto = os.readlink(srcname) 
os.symlink(linkto, dstname) 
elif os.path.isdir(srcname): 
copytree(srcname, dstname, symlinks) 
else: 
copy2(srcname, dstname) 
# XXX What about devices, sockets etc.? 
except (IOError, os.error) as why: 
errors.append((srcname, dstname, str(why))) 
# catch the Error from the recursive copytree so that we can 
# continue with other files 
except Error as err: 
errors.extend(err.args[0]) 
try: 
copystat(src, dst) 
except WindowsError: 
# can't copy file access times on Windows 
pass 
except OSError as why: 
errors.extend((src, dst, str(why))) 
if errors: 
raise Error(errors)
Python 相关文章推荐
正确理解python中的关键字“with”与上下文管理器
Apr 21 Python
python实现用户管理系统
Jan 10 Python
pandas 数据实现行间计算的方法
Jun 08 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
Python利用字典破解WIFI密码的方法
Feb 27 Python
python time.sleep()是睡眠线程还是进程
Jul 09 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
python的链表基础知识点
Sep 13 Python
python 实现的IP 存活扫描脚本
Dec 10 Python
python pygame 愤怒的小鸟游戏示例代码
Feb 25 Python
LyScript实现绕过反调试保护的示例详解
Aug 14 Python
python zip文件 压缩
Dec 24 #Python
python 数据加密代码
Dec 24 #Python
python 测试实现方法
Dec 24 #Python
Python 面向对象 成员的访问约束
Dec 23 #Python
pymssql ntext字段调用问题解决方法
Dec 17 #Python
python 图片验证码代码
Dec 07 #Python
下载糗事百科的内容_python版
Dec 07 #Python
You might like
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
thinkphp实现数组分页示例
2014/04/13 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
你真的了解JavaScript吗?
2007/02/24 Javascript
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
JQuery优缺点分析说明
2011/04/10 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
python编写简单爬虫资料汇总
2016/03/22 Python
python中的字典使用分享
2016/07/31 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
HTML5中如何显示视频呢 HTML5视频播放demo
2013/06/08 HTML / CSS
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
2016年社区植树节活动总结
2016/03/16 职场文书
python tkinter模块的简单使用
2021/04/07 Python
python process模块的使用简介
2021/05/14 Python
SQL Server使用导出向导功能
2022/04/08 SQL Server
nginx搭建NFS网络文件系统
2022/04/14 Servers
python在package下继续嵌套一个package
2022/04/14 Python