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之数据类型总结
Sep 24 Python
《Python之禅》中对于Python编程过程中的一些建议
Apr 03 Python
用Python写一个无界面的2048小游戏
May 24 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
python计算二维矩形IOU实例
Jan 18 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
Python opencv相机标定实现原理及步骤详解
Apr 09 Python
浅谈TensorFlow之稀疏张量表示
Jun 30 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
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
PHP和Mysql中转UTF8编码问题汇总
2015/10/10 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
2017/08/04 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
2015/11/15 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
Python实现ssh批量登录并执行命令
2016/10/25 Python
python的mysqldb安装步骤详解
2017/08/14 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
关于毕业的中学校园广播稿
2014/01/26 职场文书
医药销售自荐书
2014/05/29 职场文书
Python中常见的导入方式总结
2021/05/06 Python
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript