<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[樱花浪子'S BLOG]]></title> 
<link>http://hacklu.net/blog/index.php</link> 
<description><![CDATA[叶的飘落是风的追求，还是树的不挽留。]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[樱花浪子'S BLOG]]></copyright>
<item>
<link>http://hacklu.net/blog/post//</link>
<title><![CDATA[ Python 3 教程二:文件和路径访问[转]]]></title> 
<author>樱花浪子 &lt;&gt;</author>
<category><![CDATA[★[脚本语言]★]]></category>
<pubDate>Wed, 10 Jun 2009 04:13:31 +0000</pubDate> 
<guid>http://hacklu.net/blog/post//</guid> 
<description>
<![CDATA[ 
	 Python 3 教程二:文件和路径访问[转]<br/>1 遍历文件夹和文件<br/><br/>import&nbsp;&nbsp;os<br/>import&nbsp;&nbsp;os.path<br/>#&nbsp;&nbsp;os,os.path里包含大多数文件访问的函数,所以要先引入它们.<br/>#&nbsp;&nbsp;请按照你的实际情况修改这个路径<br/>rootdir&nbsp;&nbsp;=&nbsp;&nbsp; &quot; d:/download &quot;<br/>for&nbsp;&nbsp;parent, dirnames, filenames&nbsp;&nbsp;in&nbsp;&nbsp;os.walk(rootdir):<br/>&nbsp;&nbsp;&nbsp;&nbsp; # case 1:<br/>&nbsp;&nbsp;&nbsp;&nbsp; for&nbsp;&nbsp;dirname&nbsp;&nbsp;in&nbsp;&nbsp;dirnames:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print&nbsp;&nbsp;( &quot; parent is: &quot;&nbsp;&nbsp; +&nbsp;&nbsp;parent)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print&nbsp;&nbsp;( &quot; dirname is: &quot;&nbsp;&nbsp; +&nbsp;&nbsp;dirname)<br/>&nbsp;&nbsp;&nbsp;&nbsp; # case 2<br/>&nbsp;&nbsp;&nbsp;&nbsp; for&nbsp;&nbsp;filename&nbsp;&nbsp;in&nbsp;&nbsp;filenames:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print&nbsp;&nbsp;( &quot; parent is: &quot;&nbsp;&nbsp; +&nbsp;&nbsp;parent)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print&nbsp;&nbsp;( &quot; filename with full path : &quot;&nbsp;&nbsp; +&nbsp;&nbsp;os.path.join(parent, filename))<br/><br/>&#039;&#039;&#039; 知识点:<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* os.walk返回一个三元组.其中dirnames是所有文件夹名字(不包含路径),filenames是所有文件的名字(不包含路径).parent表示父目录.<br/>&nbsp;&nbsp;&nbsp;&nbsp;* case1 演示了如何遍历所有目录.<br/>&nbsp;&nbsp;&nbsp;&nbsp;* case2 演示了如何遍历所有文件.<br/>&nbsp;&nbsp;&nbsp;&nbsp;* os.path.join(dirname,filename) : 将形如&quot;/a/b/c&quot;和&quot;d.java&quot;变成/a/b/c/d.java&quot;.<br/>&#039;&#039;&#039;<br/><br/> <br/><br/> <br/>2 分割路径和文件名<br/><br/> <br/>import&nbsp;&nbsp;os.path<br/># 常用函数有三种:分隔路径,找出文件名.找出盘符(windows系统),找出文件的扩展名.<br/># 根据你机器的实际情况修改下面参数.<br/>spath = &quot; D:/download/repository.7z &quot;<br/><br/>#&nbsp;&nbsp;case 1:<br/>p,f = os.path.split(spath);<br/>print ( &quot; dir is: &quot; + p)<br/>print ( &quot; file is: &quot; + f)<br/><br/>#&nbsp;&nbsp;case 2:<br/>drv,left = os.path.splitdrive(spath);<br/>print ( &quot; driver is: &quot; + drv)<br/>print ( &quot; left is: &quot; + left)<br/>#&nbsp;&nbsp;case 3:<br/>f,ext = os.path.splitext(spath);<br/>print ( &quot; f is: &quot; + f)<br/>print ( &quot; ext is: &quot; + ext)<br/>&#039;&#039;&#039;<br/>&nbsp;&nbsp;&nbsp;&nbsp;知识点:&nbsp;&nbsp;&nbsp;&nbsp;这三个函数都返回二元组.<br/>&nbsp;&nbsp;&nbsp;&nbsp;* case1 分隔目录和文件名<br/>&nbsp;&nbsp;&nbsp;&nbsp;* case2 分隔盘符和文件名<br/>&nbsp;&nbsp;&nbsp;&nbsp;* case3 分隔文件和扩展名<br/>&#039;&#039;&#039;<br/><br/><br/><br/>总结:5个函数<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* os.walk(spath)<br/>&nbsp;&nbsp;&nbsp;&nbsp;* os.path.split(spath)<br/>&nbsp;&nbsp;&nbsp;&nbsp;* os.path.splitdrive(spath)<br/>&nbsp;&nbsp;&nbsp;&nbsp;* os.path.splitext(spath)<br/>&nbsp;&nbsp;&nbsp;&nbsp;* os.path.join(path1,path2)<br/><br/> <br/>3 实战:文件备份小程序<br/><br/> <br/>import&nbsp;&nbsp;os<br/>import&nbsp;&nbsp;shutil<br/>import&nbsp;&nbsp;datetime<br/><br/>&#039;&#039;&#039;<br/>作用：将目录备份到其他路径。<br/>实际效果：<br/>假设给定目录&quot;/media/data/programmer/project/python&quot; ，<br/>备份路径&quot;/home/diegoyun/backup/“ ，<br/>则会将python目录备份到备份路径下，形如：<br/>/home/diegoyun/backup/yyyymmddHHMMSS/python/xxx/yyy/zzz..<br/><br/>用法:更改这两个参数.<br/>backdir:备份目的地.<br/>copydirs:想要备份的文件夹.<br/>&#039;&#039;&#039;<br/><br/><br/>def&nbsp;&nbsp;mainLogic():<br/>&nbsp;&nbsp;&nbsp;&nbsp; # add dirs you want to copy<br/>&nbsp;&nbsp;&nbsp;&nbsp;backdir = &quot; d:&#92;&#92;test &quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; print (backdir)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;copydirs = []<br/>&nbsp;&nbsp;&nbsp;&nbsp;copydirs.append( &quot; d:&#92;&#92;temp &quot; );<br/>&nbsp;&nbsp;&nbsp;&nbsp; # copydirs.append(&quot;d:&#92;&#92;test&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; print ( &quot; Copying files&nbsp;&nbsp;=================== &quot; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;start = datetime.datetime.now()<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; # gen a data folder for backup<br/>&nbsp;&nbsp;&nbsp;&nbsp;backdir = os.path.join(backdir,start.strftime( &quot; %Y-%m-%d &quot; ))<br/>&nbsp;&nbsp;&nbsp;&nbsp; # print(&quot;backdir is:&quot;+backdir)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;kc = 0<br/>&nbsp;&nbsp;&nbsp;&nbsp; for&nbsp;&nbsp;d&nbsp;&nbsp;in&nbsp;&nbsp;copydirs:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kc = kc + copyFiles(d,backdir)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;end = datetime.datetime.now()<br/>&nbsp;&nbsp;&nbsp;&nbsp; print ( &quot; Finished! =================== &quot; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; print ( &quot; Total files :&nbsp;&nbsp;&quot;&nbsp;&nbsp; +&nbsp;&nbsp;str(kc) )<br/>&nbsp;&nbsp;&nbsp;&nbsp; print ( &quot; Elapsed time :&nbsp;&nbsp;&quot;&nbsp;&nbsp; +&nbsp;&nbsp;str((end - start).seconds) + &quot;&nbsp;&nbsp;seconds &quot; )<br/><br/>def&nbsp;&nbsp;copyFiles(copydir,backdir):<br/>&nbsp;&nbsp;&nbsp;&nbsp;prefix = getPathPrefix(copydir)<br/>&nbsp;&nbsp;&nbsp;&nbsp; # print(&quot;prefix is:&quot;+prefix )&nbsp;&nbsp; <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;i = 0<br/>&nbsp;&nbsp;&nbsp;&nbsp; for&nbsp;&nbsp;dirpath,dirnames,filenames&nbsp;&nbsp;in&nbsp;&nbsp;os.walk(copydir):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for&nbsp;&nbsp;name&nbsp;&nbsp;in&nbsp;&nbsp;filenames:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oldpath = os.path.join(dirpath,name)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newpath = omitPrefix(dirpath,prefix)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print ( &quot; backdir is: &quot; + backdir )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newpath = os.path.join(backdir,newpath)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print ( &quot; newpath is: &quot; + newpath)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;os.path.exists(newpath) != True:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.makedirs(newpath)&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newpath = os.path.join(newpath,name)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print ( &quot; From: &quot; + oldpath + &quot;&nbsp;&nbsp;to: &quot; + newpath)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shutil.copyfile(oldpath,newpath)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i = i + 1<br/>&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp;i&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>def&nbsp;&nbsp;getPathPrefix(fullpath):<br/>&nbsp;&nbsp;&nbsp;&nbsp; # Giving /media/data/programmer/project/ , get the prefix<br/>&nbsp;&nbsp;&nbsp;&nbsp; # /media/data/programmer/<br/>&nbsp;&nbsp;&nbsp;&nbsp;l = fullpath.split(os.path.sep)<br/>&nbsp;&nbsp;&nbsp;&nbsp; # print(str(l[-1]==&quot;&quot;)&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;l[ - 1 ] == &quot;&quot; :<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp = l[ - 2 ]<br/>&nbsp;&nbsp;&nbsp;&nbsp; else :<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp = l[ - 1 ]<br/>&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp;fullpath[0:len(fullpath) - len(tmp) - 1 ]<br/><br/>def&nbsp;&nbsp;omitPrefix(fullpath,prefix):<br/>&nbsp;&nbsp;&nbsp;&nbsp; # Giving /media/data/programmer/project/python/tutotial/file/test.py ,<br/>&nbsp;&nbsp;&nbsp;&nbsp; # and prefix is Giving /media/data/programmer/project/,<br/>&nbsp;&nbsp;&nbsp;&nbsp; # return path as python/tutotial/file/test.py<br/>&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp;fullpath[len(prefix) + 1 :]<br/><br/>mainLogic()
]]>
</description>
</item><item>
<link>http://hacklu.net/blog/post//#blogcomment</link>
<title><![CDATA[[评论]  Python 3 教程二:文件和路径访问[转]]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://hacklu.net/blog/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>