Difference between revisions of "Esercizio 3 Prova Pratica 29-05-14"

From Sistemi Operativi
Jump to navigation Jump to search
(Created page with "<source lang="text"> Il comando che dovrete implementare come script shell o programma python e' statlen. Data una directory statlen fa una statistica sulla lunghezza dei nomi...")
 
 
Line 14: Line 14:
  
 
== Soluzione di Krusty ==
 
== Soluzione di Krusty ==
 +
<source lang="python">
 
import os, sys
 
import os, sys
 
from stat import *
 
from stat import *
Line 34: Line 35:
 
for key in v:
 
for key in v:
 
print(key, ':', v[key])
 
print(key, ':', v[key])
 +
 +
</source>

Latest revision as of 17:07, 26 April 2015

Il comando che dovrete implementare come script shell o programma python e' statlen.
Data una directory statlen fa una statistica sulla lunghezza dei nomi dei file presenti in tutto il sottoalbero con radice nella
directory passata come parametro.
es.
$ statlen /tmp
2: 2
3: 10
5: 4
...
significa che in tmp (e in tutte le sottodir.ectory di /tmp) ci sono 2 file con nome di due caratteri, 10 con nomi di 3 caratteri e
cosi' via.

Soluzione di Krusty

import os, sys
from stat import *

def recScan(pathname,v):
	for f in os.listdir(pathname):
		path = os.path.join(pathname,f)
		s = os.stat(path)
		if S_ISREG(s.st_mode):
			l = len(f)
			if(l not in v):
				v[l]=1
			else:
				v[l] = v[l] + 1
		elif S_ISDIR(s.st_mode):	
			recScan(path,v)

v = {}
recScan(sys.argv[1],v)	
for key in v:
	print(key, ':', v[key])