Mana pirmā noderīgā Python programma |
Mana pirmā noderīgā Python programma | Jul. 2nd, 2012 @ 01:24 pm |
---|
#!/usr/bin/python
import ftplib
import re
import sys
def rlst(ftp, path):
subdirs = []
def dir_callback(line):
name = re.match("(?:[^ ]+ +){8}(.+)", line).group(1)
if re.match("[dl]", line): subdirs.append(name)
else: print(path + "/" + name)
ftp.dir(path, dir_callback)
for name in subdirs: rlst(ftp, path + "/" + name)
try:
ftp = ftplib.FTP(sys.argv[1])
ftp.login()
rlst(ftp, sys.argv[2])
ftp.quit()
except (ftplib.all_errors, KeyboardInterrupt) as e:
print(str(e))
|
Ja gribi to laist kā autonomu skriptu, iesaku ielikt to try/except bloku funkcijā un iebarot main funkcijas hendlerim, like so: def main(): your try/catch
if __name__ == "__main__": main()
Iespēju norādīt, tieši ko interpretators izpildīs, palaižot skriptu (bez šī hendlera tas izpildīs visu, kas sākas nulltajā indentācijas līmenī). Pie maziem un viegli pārskatāmiem skriptiem tas var nebūt būtiski, taču to tik un tā iesaka kā labu praksi.
Un kāpēc vajag pārbaudi pirms main izsaukšanas?
Kad interpretators palaiž skriptu, sistēmas mainīgajam __name__ tiek piešķirta vērtība, tipiskajā gadījumā tā ir "__main__" (ja fails tiek nevis izsaukts, bet importēts, tur var būt citas vērtības). Tā pārbaude kalpo par entry pointu, kas norāda interpretatoram, tieši ko izpildīt kā skripta main funkciju.
|
|
Top of Page |
Powered by Sviesta Ciba |