[Tutor PyCZ] ftplib
petr babicka
babcca na seznam.cz
Pondělí Srpen 14 15:54:45 CEST 2006
> ------------ Původní zpráva ------------
> Od: <tutor-request na py.cz>
> Předmět: Tutor Digest, Vol 15, Issue 1
> Datum: 13.8.2006 12:03:43
> ----------------------------------------
> Příspěvky do konference Tutor zasílejte na adresu:
> tutor na py.cz
>
> Pro přihlášení nebo odhlášení použijte WWW rozhraní na adrese"
> http://www.py.cz/mailman/listinfo/tutor
> nebo použijte elektronickou poštu, zašlete slovo help v těle dopisu na
> adresu
> tutor-request na py.cz
>
> Správce konference můžete nalézt na adrese
> tutor-owner na py.cz
>
> Když budete odpovídat na příspěvek, změňte, prosím, Subject: na něco
> rozumnějšího než je: "Re: Contents of Tutor digest..."
>
>
>
> Dnešní menu:
>
> 1. ftplib (xDlabacekM na seznam.cz)
> 2. Re: ftplib (Tomas Brabenec)
> 3. Re: ftplib (Tomas Brabenec)
> 4. Re: ftplib (xDlabacekM na seznam.cz)
> 5. Re: ftplib ( Petr Hlávka )
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Sat, 12 Aug 2006 14:47:41 +0200
> From: xDlabacekM na seznam.cz
> Subject: [Tutor PyCZ] ftplib
> To: tutor na py.cz
> Message-ID: <000601c6be0d$86d5d210$7392b00a na marius>
> Content-Type: text/plain; charset="iso-8859-2"
>
>
> Zdravím,
> mám dotaz ohledně ftp modulu ftplib. V kořenovém adresáři mám spousty
> souborů, který chci smazat a nechci je vypisovat po jednom. Samotný
> adresář smazat nelze. Takže bych chtěl jen vymazat OBSAH adresáře, a
> nebo vymyslet nějaký zástupný znak pro vše(něco ve stylu delete *.*).
> Děkuji moc
>
> Marek Dlabáček
>
>
>
> ------------- další část ---------------
> HTML příloha byla odstraněna...
> URL:
> http://www.py.cz/pipermail/tutor/attachments/20060812/94d3e7ed/attachment.html
> ------------- další část ---------------
> Netextová příloha byla odstraněna...
> Jméno: [žádný popis není k dispozici]
> Typ: image/gif
> Velikost: 862 bytes
> Popis: [žádný popis není k dispozici]
> Url :
> http://www.py.cz/pipermail/tutor/attachments/20060812/94d3e7ed/attachment-0001.gif
>
>
> ------------------------------
>
> Message: 2
> Date: Sat, 12 Aug 2006 18:00:11 +0200
> From: Tomas Brabenec <konference na brabenec.net>
> Subject: Re: [Tutor PyCZ] ftplib
> To: Konference Tutor portalu PyCZ <tutor na py.cz>
> Message-ID: <44DDFB0B.2080905 na brabenec.net>
> Content-Type: text/plain; charset=ISO-8859-2; format=flowed
>
> Tak si vypis obsah adresare a v cyklu to potom promaz.
>
> Tomas Brabenec
> http://brabenec.net | http://uzdroje.cz
>
>
>
>
> Dne 12.8.2006 14:47, xDlabacekM na seznam.cz napsal(a):
> >
> > Zdravím,
> >
> > mám dotaz ohledně ftp modulu ftplib. V kořenovém adresáři mám spousty
> > souborů, který chci smazat a nechci je vypisovat po jednom. Samotný
> > adresář smazat nelze. Takže bych chtěl jen vymazat OBSAH adresáře, a
> > nebo vymyslet nějaký zástupný znak pro vše(něco ve stylu delete *.*).
> > Děkuji moc
> >
> >
> >
> > **Marek Dlabáček**
> >
> >
> >
> >
> >
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Tutor mailing list
> > Tutor na py.cz
> > http://www.py.cz/mailman/listinfo/tutor
>
>
> ------------------------------
>
> Message: 3
> Date: Sat, 12 Aug 2006 19:49:48 +0200
> From: Tomas Brabenec <konference na brabenec.net>
> Subject: Re: [Tutor PyCZ] ftplib
> To: Konference Tutor portalu PyCZ <tutor na py.cz>
> Message-ID: <44DE14BC.6000104 na brabenec.net>
> Content-Type: text/plain; charset=ISO-8859-2; format=flowed
>
> Aha, promin, ted jsem si to precetl znovu a vidim, ze to nechces delat
> po jednom.
> Sypu si popel na hlavu.
>
> Tomas Brabenec
> http://brabenec.net | http://uzdroje.cz
>
>
>
>
> Dne 12.8.2006 18:00, Tomas Brabenec napsal(a):
> > Tak si vypis obsah adresare a v cyklu to potom promaz.
> >
> > Tomas Brabenec
> > http://brabenec.net | http://uzdroje.cz
> >
> >
> >
> >
> > Dne 12.8.2006 14:47, xDlabacekM na seznam.cz napsal(a):
> >
> >> Zdravím,
> >>
> >> mám dotaz ohledně ftp modulu ftplib. V kořenovém adresáři mám spousty
> >> souborů, který chci smazat a nechci je vypisovat po jednom. Samotný
> >> adresář smazat nelze. Takže bych chtěl jen vymazat OBSAH adresáře, a
> >> nebo vymyslet nějaký zástupný znak pro vše(něco ve stylu delete *.*).
> >> Děkuji moc
> >>
> >>
> >>
> >> **Marek Dlabáček**
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> ------------------------------------------------------------------------
> >>
> >> _______________________________________________
> >> Tutor mailing list
> >> Tutor na py.cz
> >> http://www.py.cz/mailman/listinfo/tutor
> >>
> > _______________________________________________
> > Tutor mailing list
> > Tutor na py.cz
> > http://www.py.cz/mailman/listinfo/tutor
> >
> >
> >
>
>
> ------------------------------
>
> Message: 4
> Date: Sat, 12 Aug 2006 22:42:39 +0200
> From: xDlabacekM na seznam.cz
> Subject: Re: [Tutor PyCZ] ftplib
> To: "'Konference Tutor portalu PyCZ'" <tutor na py.cz>
> Message-ID: <000001c6be4f$fa21a2c0$7392b00a na marius>
> Content-Type: text/plain; charset="iso-8859-2"
>
> Možná jsem trochu línej, ale těch souborů tam fakt není málo(a to nemám
> velký web-děsí mě myšlenka třeba galerie). Zkoušel jsem pár věcí, ale
> bez úspěchu.
>
> Marek Dlabáček
>
> -----Original Message-----
> From: tutor-bounces na py.cz [mailto:tutor-bounces na py.cz] On Behalf Of
> Tomas Brabenec
> Sent: Saturday, August 12, 2006 7:50 PM
> To: Konference Tutor portalu PyCZ
> Subject: Re: [Tutor PyCZ] ftplib
>
> Aha, promin, ted jsem si to precetl znovu a vidim, ze to nechces delat
> po jednom.
> Sypu si popel na hlavu.
>
> Tomas Brabenec
> http://brabenec.net | http://uzdroje.cz
>
>
>
>
> Dne 12.8.2006 18:00, Tomas Brabenec napsal(a):
> > Tak si vypis obsah adresare a v cyklu to potom promaz.
> >
> > Tomas Brabenec
> > http://brabenec.net | http://uzdroje.cz
> >
> >
> >
> >
> > Dne 12.8.2006 14:47, xDlabacekM na seznam.cz napsal(a):
> >
> >> Zdravím,
> >>
> >> mám dotaz ohledně ftp modulu ftplib. V kořenovém adresáři mám spousty
>
> >> souborů, který chci smazat a nechci je vypisovat po jednom. Samotný
> >> adresář smazat nelze. Takže bych chtěl jen vymazat OBSAH adresáře, a
> >> nebo vymyslet nějaký zástupný znak pro vše(něco ve stylu delete *.*).
>
> >> Děkuji moc
> >>
> >>
> >>
> >> **Marek Dlabáček**
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> ------------------------------------------------------------------------
> >>
> >> _______________________________________________
> >> Tutor mailing list
> >> Tutor na py.cz
> >> http://www.py.cz/mailman/listinfo/tutor
> >>
> > _______________________________________________
> > Tutor mailing list
> > Tutor na py.cz
> > http://www.py.cz/mailman/listinfo/tutor
> >
> >
> >
> _______________________________________________
> Tutor mailing list
> Tutor na py.cz
> http://www.py.cz/mailman/listinfo/tutor
>
>
>
>
> ------------------------------
>
> Message: 5
> Date: Sat, 12 Aug 2006 23:32:58 +0200
> From: " Petr Hlávka " <petrhlavka na gmail.com>
> Subject: Re: [Tutor PyCZ] ftplib
> To: "Konference Tutor portalu PyCZ" <tutor na py.cz>
> Message-ID:
> <e5258fb30608121432p5502e5ceo418855fa5e142a43 na mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-2; format=flowed
>
> Myslim si, ze to jinak nez po jednom nepujde (a ze to tak musi delat
> kazdy FTP klient). FTP protokol pro to totiz nema zadny prikaz -
> http://www.faqs.org/rfcs/rfc959.html
>
> S pozdravem, Petr Hlavka.
>
> On 8/12/06, xDlabacekM na seznam.cz <xDlabacekM na seznam.cz> wrote:
> > Možná jsem trochu línej, ale těch souborů tam fakt není málo(a to nemám
> > velký web-děsí mě myšlenka třeba galerie). Zkoušel jsem pár věcí, ale
> > bez úspěchu.
> >
> > Marek Dlabáček
> >
> > -----Original Message-----
> > From: tutor-bounces na py.cz [mailto:tutor-bounces na py.cz] On Behalf Of
> > Tomas Brabenec
> > Sent: Saturday, August 12, 2006 7:50 PM
> > To: Konference Tutor portalu PyCZ
> > Subject: Re: [Tutor PyCZ] ftplib
> >
> > Aha, promin, ted jsem si to precetl znovu a vidim, ze to nechces delat
> > po jednom.
> > Sypu si popel na hlavu.
> >
> > Tomas Brabenec
> > http://brabenec.net | http://uzdroje.cz
> >
> >
> >
> >
> > Dne 12.8.2006 18:00, Tomas Brabenec napsal(a):
> > > Tak si vypis obsah adresare a v cyklu to potom promaz.
> > >
> > > Tomas Brabenec
> > > http://brabenec.net | http://uzdroje.cz
> > >
> > >
> > >
> > >
> > > Dne 12.8.2006 14:47, xDlabacekM na seznam.cz napsal(a):
> > >
> > >> Zdravím,
> > >>
> > >> mám dotaz ohledně ftp modulu ftplib. V kořenovém adresáři mám spousty
> >
> > >> souborů, který chci smazat a nechci je vypisovat po jednom. Samotný
> > >> adresář smazat nelze. Takže bych chtěl jen vymazat OBSAH adresáře, a
> > >> nebo vymyslet nějaký zástupný znak pro vše(něco ve stylu delete *.*).
> >
> > >> Děkuji moc
> > >>
> > >>
> > >>
> > >> **Marek Dlabáček**
> > >>
> > >>
> > >>
> > >>
> > >>
> > >>
> > >>
> > >>
> > ------------------------------------------------------------------------
> > >>
> > >> _______________________________________________
> > >> Tutor mailing list
> > >> Tutor na py.cz
> > >> http://www.py.cz/mailman/listinfo/tutor
> > >>
> > > _______________________________________________
> > > Tutor mailing list
> > > Tutor na py.cz
> > > http://www.py.cz/mailman/listinfo/tutor
> > >
> > >
> > >
> > _______________________________________________
> > Tutor mailing list
> > Tutor na py.cz
> > http://www.py.cz/mailman/listinfo/tutor
> >
> >
> > _______________________________________________
> > Tutor mailing list
> > Tutor na py.cz
> > http://www.py.cz/mailman/listinfo/tutor
> >
>
> ------------------------------
>
> _______________________________________________
> Tutor mailing list
> Tutor na py.cz
> http://www.py.cz/mailman/listinfo/tutor
>
Cest tak nevim jestli ti pomuzu, ale snad jo. Pokud se nemilim tak v ftp
neexistuje funkce ktera umozni vymazat slozku s daty, ale co nejni muze bejt :).
Pokusil jsem se ti napsat kapku mensi kod, kterehj by to mel zvladnout, ale
je potreba kapku zeditovat modul ftplib. Tak pokud chces tak ti to posilam.
Otevri modul ftplib a prejdi na radek 388 na funkci retrlines(...) a uprav ho:
def retrlines(self, cmd, callback = None):
'''Retrieve data in line mode.
The argument is a RETR or LIST command.
The callback function (2nd argument) is called for each line,
with trailing CRLF stripped. This creates a new port for you.
print_line() is the default callback.'''
#editovano dne 13.8. 06 Pridano vraceni seznamu s obshem slozek
seznam=[] #novy
if callback is None: callback = print_line
resp = self.sendcmd('TYPE A')
conn = self.transfercmd(cmd)
fp = conn.makefile('rb')
while 1:
line = fp.readline()
seznam.append(line) #novy
if self.debugging > 2: print '*retr*', repr(line)
if not line:
break
if line[-2:] == CRLF:
line = line[:-2]
elif line[-1:] == '\n':
line = line[:-1]
callback(line)
fp.close()
conn.close()
return seznam,self.voidresp() #novy
Tak aby vypadl nejak takhle. Nyni sme si zajistili vraceni obsahu slozky pro
dalsi praci. Nyni na prvim miste vraci obsah slozky na druhym odpoved servru.
Tak a ted ten kod na vymazani:
from ftplib import FTP
import string
def smaz(domena,uzivatel,heslo,slozka):
soubory=[]
ftp = FTP(domena)
ftp.login(user=uzivatel,passwd=heslo)
polozky,odpoved=ftp.retrlines("LIST "+slozka)
for polozku in polozky:
soubor=string.split(polozku)
if not len(soubor) < 1:
soubory.append(soubor[-1])
odpoved=raw_input("Chcete pokracovat? (a/n): ")
if odpoved == "a" or odpoved == "A":
for soubor in soubory:
if soubor ==".." or soubor==".":
pass
else:
print "Mazu: %s" % soubor
ftp.delete(slozka+"\\"+soubor)
ftp.quit()
else:
print "Akce zrusena"
ftp.quit()
Jako prvni to prebira ftp adresu, dale uz. jmeno, heslo, adresu adresare od
korenoveho adresare. for example:
smaz("localhost","xxx","yyy","ftproot")
pred vymazanim to vytiskne obsah slozky a zepta se na smazani.
Na Cerberusu to slape.
Bugs:
Soubory, ktere chcete smazat nesmi mit v nazvu mezeru
slozka ze ktere chcete neco vymazat nesmi obsahovat dalsi slozku
Nejsou odchytany zadne vijimky, to si muzete dodelat sam :)
Snad jsem vam pomohl :)
Petr Babička (babča)
Další informace o konferenci Tutor