prosím, mám jen malý dotaz. Mám v bashi napsaný skript, který přepisuji do pythonu a narazil jsem na problém při procházení složek v adresář. Nevíte prosím, jak bych v pythonu mohl napsat něco jako (jde mi jen pouze o ten cyklus, né to v něm :)
for directory in */ ; do
.
.
.
echo "$directory"
echo "---------------------------"
echo "Editing..."
cd $directory
# sed pro ID
cat *.txt >> value.log
stručně :) vezmi tuhle složku - udělej definovanou operaci, vezmi další složku a udělej tu samou operaci a atd pro n-složek
Nechápu dotaz. For v Pythonu funguje podobně jako v Bashi -- pro každou položku kolekce provede daný příkaz(y). Momentálně tu operaci máš jako přidání názvu do listu, ale můžeš dělat i cokoliv jiného.
No, co ten příkaz udělá? Shell rozvine masku na soubory, které jí vyhovují, cat vypíše jejich obsah a výstup je přesměrovaný do logu.
import glob
import shutil
for dirname in glob.glob('*/'):
print('dir', dirname)
logname = dirname + 'value.log'
with open(logname, 'a') as flog:
for txtname in glob.glob(glob.escape(dirname) + '*.txt'):
print('txt', txtname)
with open(txtname, 'r') as ftxt:
shutil.copyfileobj(ftxt, flog)