给我一个Terminal,我可以创造一个世界。
给我一台windows,我只能活在盖茨的世界里。
环境win7 64bit,python2.7,怎么安装.whl的拓展包呢?什么环境变量,pip的都不用管了,只需要cmd下一句话,
python -m pip install ***********.whl
就可以啦
2016年5月30日星期一
2016年5月9日星期一
python遍历文件夹小结
下面来小结一下Python遍历文件夹的几种方法。
方法1:使用os.listdir
import os
for filename in os.listdir('c:\windows'):
print filename
本结果直接输出当前根目录下的所有名字,即文件夹名和文件名,并没有进入子文件夹,同时并不包括文件路径,格式如下,
dsdkljsalkdjsalk.txt
ndskdkewjdkj.doc
folder1
folder2
- 对于想输出特定目录下的文件名/文件夹名,可以再加入条件判断,
os.path.isfile(root+filename)
os.path.isdir(root+filename)
这样加以筛选就可以只输出当前路径下所有文件名,或者当前路径下所有文件夹名。
- 如果你想按照特定顺序排列,如modified或者created time,需对当前排序。
假定当前的所有文件名都存在在某list1内,形如,
for filename in os.listdir(folder):
if(os.path.isfile(folder+filename)):
list1.append(os.path.join(folder, filename))
sorted_list1 = sorted(matches, key=os.path.getmtime)
只需在sorted里加入key即可,这里的key是os.path.getmtime,文件的更改时间,
os.path.getatime是最近访问时间,os.path.getctime是创建时间。
*注意,这里的list1中os.path.join()方法用于组建新的路径名,我们除了filename,还加入了这些文件的当前路径。这里的folder路径不能去掉,否则笨蛋的程序凭借光杆文件名不会定位到我们的文件位置。
- 问题又来了,我们得到的经过排序的sorted_list1里还包含了路径名,这样大煞风景,怎么办呢? 用split!
for name in sorted_matches:
name_complet.append(name.split("/")[-1])
这里巧妙地割出-1个“/”的字符串,即左起第一个“/”前的字段,就是我们的完整文件名啦。
方法2:使用glob模块,可以设置文件过滤
import glob
for filename in glob.glob('c:\windows\*.exe'):
print filename
本方法很方便筛选特定格式的文件。
方法3:通过os.path.walk递归遍历,可以访问子文件夹
import os.path
def processDirectory ( args, dirname, filenames ):
print 'Directory',dirname
for filename in filenames:
print ' File',filename
os.path.walk('c:\windows', processDirectory, None )
这是使用最多的方法,可以递归进入子文件夹,从而实现某目录所有文件遍历的效果。
方法4:非递归
#!/bin/python
#
#site:www.jbxue.com
import os
for dirpath, dirnames, filenames in os.walk('c:\\winnt'):
print 'Directory', dirpath
for filename in filenames:
print ' File', filename
订阅:
博文 (Atom)