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发送邮件接收邮件示例分享
Jan 21 Python
python操作mongodb根据_id查询数据的实现方法
May 20 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
Oct 18 Python
教你用Type Hint提高Python程序开发效率
Aug 08 Python
Python实现的多线程http压力测试代码
Feb 08 Python
python和flask中返回JSON数据的方法
Mar 26 Python
查看django执行的sql语句及消耗时间的两种方法
May 29 Python
Pyqt QImage 与 np array 转换方法
Jun 27 Python
python应用文件读取与登录注册功能
Sep 23 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
Python importlib模块重载使用方法详解
Oct 13 Python
python中编写函数并调用的知识点总结
Jan 13 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
PHP 类型转换函数intval
2009/06/20 PHP
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
2020/04/06 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
jQuery的框架介绍
2016/05/11 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
小学开学寄语
2014/01/19 职场文书
感恩的演讲稿
2014/05/06 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书