对于每一个Python目录操作的从业人员,无论是开发人员、项目经理、还是测试人员,掌握了Python这们语言会使我们的编程工作更简单和更轻松,希望大家能够从中吸取自己想要的东西。
创新互联建站-专业网站定制、快速模板网站建设、高性价比武冈网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式武冈网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖武冈地区。费用合理售后完善,10多年实体公司更值得信赖。
参数dirname是当前正在访问的目录的绝对路径,而参数files内的文件名则是相对于dirname的相对路径。在此期间,当前工作目录并没有改变,那就是说该脚本仍然呆在脚本启动时刻所在的Python目录操作中。
这就是为什么我们需要把filepath弄成带有dirname和file的绝对路径的原因。若要改变当前工作目录dirname,只要在针对每个目录调用os.path.walk的函数中调用一下os.chdir(dirname)。
然后在该函数的末尾重新调用os.chdir(dirname)将当前工作目录改回原值即可,如下所示:
- def ls(arg, dirname, files):
- print dirname, ’has the files’, files
- os.path.walk(os.environ[’HOME’], ls, None)
- 本例中,参数arg并非必需,所以在os.path.walk调用中让其取值为None即可。
- 为了列出主目录中所有大于1Mb的文件,可以使用下面的代码:
- def checksize1(arg, dirname, files):
- for file in files:
- filepath = os.path.join(dirname, file)
- if os.path.isfile(filepath):
- size = os.path.getsize(filepath)
- if size > 1000000:
- sizesize_in_Mb = size/1000000.0
- arg.append((size_in_Mb, filename))
- bigfiles = []
- root = os.environ[’HOME’]
- os.path.walk(root, checksize1, bigfiles)
- for size, name in bigfiles:
- print name, ’大小为’, size, ’Mb’
参数arg带来了巨大的灵活性。我们可以使用它来同时存放输入数据和生成的数据结构。下一个范例将收集所有大于一定尺寸的带有规定扩展名的文件的文件名和大小。输出的结果按照文件大小排列。
当然,如果您愿意也可以编写具有类似功能的代码来替代os.path.walk。下面的代码,将针对每个文件而非每个目录来调用的自定义函数,如下所示:
- def checksize2(fullpath, bigfiles):
- size = os.path.getsize(fullpath)
- if size > 1000000:
- bigfiles.append(’%.2fMb %s’ % (size/1000000.0, fullpath))
- bigfiles = []
- root = os.environ[’HOME’]
- find(checksize2, root, bigfiles)
- for fileinfo in bigfiles:
- print fileinfo
注意为列表排序的函数,bigfiles[’filelist’]函数中的每个元素就是一个字典,键size保存着一个字符串,不过在进行比较之前我们必须将单位Mb(最后两个字符)去掉,并将其转换为浮点数。对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python目录操作为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数。
重要的是,这些函数无论是在Unix、Windows还是Macintosh平台上,它们的使用方式是完全一致的。本文详细解释了这些函数的使用方法。其中,我们首先介绍了显示目录内容的功能,然后描述如何测试一个文件名对应的是一个标准文件、Python目录操作还是链接。
以及提取文件大小和日期的方法。之后,我们还将介绍如何删除文件和Python目录操作,如何复制和删除文件,以及怎样将一个完整的文件路径分解成目录部分和文件名部分,最后,我们讲解目录的创建,以及如何在目录树中移动目录并处理文件。
分享题目:几分钟轻松教会您Python目录操作
文章链接:http://www.mswzjz.com/qtweb/news8/200058.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联