# TD3
import os
#########
### ex. 1
for root, dir, files in os.walk('.'):
for file in files:
print root+os.sep+file
##########
#### ex. 2
f=d=0
for root, dir, files in os.walk('.'):
f+=len(files); d+=len(dir)
print "%d files, %d directories" % (f,d)
# ne compte pas "."
#########
### ex. 3
# utiliser os.path.islink(path)
f=s=d=0
for root, dirs, files in os.walk('.'):
for dir in dirs:
if os.path.islink(root+os.sep+dir): s+=1
else: d+=1
for file in files:
if os.path.islink(root+os.sep+file): s+=1
else: f+=1
print "%d directories, %d files, %d symlinks" % (d,f,s)
#########
### ex. 4
# Un lien vers un fichier non existant peut generer une erreur
# On gere avec try/except
fpriv=fpub=spriv=spub=dpriv=dpub=0
for root, dirs, files in os.walk(os.environ['HOME']):
for dir in dirs:
try:
s = oct(os.stat(root+os.sep+dir).st_mode)[-2:]
pub = int(s,8)
if os.path.islink(root+os.sep+dir):
if pub: spub+=1
else: spriv+=1
else:
if pub: dpub+=1
else: dpriv+=1
except Exception, e :
print roor+os.sep+dir+' --> broken link!'
print e
for file_ in files:
try:
s = oct(os.stat(root+os.sep+file_).st_mode)[-2:]
pub = int(s,8)
if os.path.islink(root+os.sep+file_):
if pub: spub+=1
else: spriv+=1
else:
if pub: fpub+=1
else: fpriv+=1
except Exception, e:
print root+os.sep+file_ + ' --> broken link'
print e
print
print "Statistics of %s:" % (os.environ['HOME'])
print
print "Public directories: %d" % (dpub,)
print "Private directories: %d" % (dpriv,)
print "Public files: %d" % (fpub,)
print "Private files: %d" % (fpriv,)
print "Public symlinks: %d" % (spub,)
print "Private symlinks: %d" % (spriv,)