CannibalSmith - Mana pirmā noderīgā Python programma

About Mana pirmā noderīgā Python programma

Previous Entry Mana pirmā noderīgā Python programmaJul. 2nd, 2012 @ 01:24 pm Next Entry
#!/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))
Tags:
(Leave a comment)
[User Picture Icon]
From:[info]mindbound
Date: July 2nd, 2012 - 01:48 pm
(Link)

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()

[User Picture Icon]
From:[info]cannibalsmith
Date: July 2nd, 2012 - 02:01 pm
(Link)
Ko tas dos?
[User Picture Icon]
From:[info]mindbound
Date: July 2nd, 2012 - 02:05 pm
(Link)
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.
[User Picture Icon]
From:[info]cannibalsmith
Date: July 2nd, 2012 - 02:08 pm
(Link)
Un kāpēc vajag pārbaudi pirms main izsaukšanas?
[User Picture Icon]
From:[info]mindbound
Date: July 2nd, 2012 - 02:13 pm
(Link)
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.
(Leave a comment)
Top of Page Powered by Sviesta Ciba