
实现代码如下:文件名为filecountpy#!/usr/bin/python import sys,os def fileCountIn(dir): return sum([len(files) for root,dirs,files in oswalk(dir)]) #得益于Python精髓的列表解析,所以一句话就搞定了 #oswalk(dir)会返回一个三元组:(当前目录,子目录列表,文件列表) #所以len(files)就是获取当前目录下的文件数,然后每个目录下的文件数求和即可 if __name__=='__main__': if len(sysargv)==2: dir=sysargv[1] print 'Total files in %s is:%d' %(dir,fileCountIn(dir)) else: print 'usage:filecountpy dirname' 使用:python filecountpy dirname 或者把filecountpy改为可执行chmod +x filecountpy再放到$PATH里面的文件夹里,可以作为日常用的一个小工具。
例如:在C:\TDDOWNLOAD目录下有atxt、btxt两个文件,另有\sub1子文件夹,C:\TDDOWNLOAD\sub1下又有ctxt、dtxt两个文件。
1
oswalk
oswalk()返回一个三元素的tuple:当前路径、子文件夹名称、文件列表。
>>>
import
os
>>>
def
fun(
path
):
for
root,
dirs,
files
in
oswalk(
path
):
for
fn
in
files:
root,
fn
>>>
fun(
r'C:\TDDOWNLOAD'
)
C:\TDDOWNLOAD
atxt
C:\TDDOWNLOAD
btxt
C:\TDDOWNLOAD\sub1
ctxt
C:\TDDOWNLOAD\sub1
dtxt
>>>
2
globglob
globglob()只接受一个参数,这个参数既代有路径,又代有匹配模式,
返回值
为一个列表。注意,globglob()无法直接穿透子文件夹,需要自己处理:
>>>
def
fun(
path
):
for
fn
in
globglob(
path
+
ossep
+
''
):
#
''代表匹配所有文件
if
ospathisdir(
fn
):
#
如果结果为文件夹
fun(
fn
)
#
递归
else:
fn
>>>
fun(
r'C:\TDDOWNLOAD'
)
C:\TDDOWNLOAD\atxt
C:\TDDOWNLOAD\btxt
C:\TDDOWNLOAD\sub1\ctxt
C:\TDDOWNLOAD\sub1\dtxt
>>>
''为匹配模式,代表匹配所有文件,只有这样才能将子文件夹查出来,以便递归深入,探查下一层的文件。
因为你函数用错了啊
tkFileDialogaskdirectory是用来获取目录的
tkFileDialogaskopenfilename是用来获取文件全路径的
tkFileDialogaskopenfilenames是用来获取多个文件的路径的
import os
def search(s, path=ospathabspath('')):
for z in oslistdir(path):
if ospathisdir(path + ospathsep + z):
print('Currnet:', path)
path2 = ospathjoin(path, z)
print('future:', path2)
search(s, path2)
elif ospathisfile(path + ospathsep + z):
if s in z:
print(ospathjoin(path, z))
with open(path + ospathsep + z, 'r') as fr:
with open('savetxt', 'a') as fw:
fwwrite(path + '\t' + frread())
search('csv', '')
以上就是关于如何获取目录下的文件数(一行Python)全部的内容,包括:如何获取目录下的文件数(一行Python)、Python中如何遍历指定目录下的所有文件、python TK怎么做一个浏览按钮获取文件全路径,下边的代码只能获取到最后一层文件夹,不能获取文件名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)