ftplib
— FTP-protokollklient¶
Källkod: Lib/ftplib.py
Denna modul definierar klassen FTP
och några relaterade objekt. Klassen FTP
implementerar klientsidan av FTP-protokollet. Du kan använda den för att skriva Python-program som utför en mängd olika automatiserade FTP-jobb, till exempel spegling av andra FTP-servrar. Den används också av modulen urllib.request
för att hantera webbadresser som använder FTP. För mer information om FTP (File Transfer Protocol), se internet RFC 959.
Standardkodningen är UTF-8, i enlighet med RFC 2640.
Tillgänglighet: not WASI.
Den här modulen fungerar inte eller är inte tillgänglig på WebAssembly. Se WebAssembly-plattformar för mer information.
Här är ett exempel på en session med ftplib
-modulen:
>>> from ftplib import FTP
>>> ftp = FTP('ftp.us.debian.org') # connect to host, default port
>>> ftp.login() # user anonymous, passwd anonymous@
'230 Login successful.'
>>> ftp.cwd('debian') # change into "debian" directory
'250 Directory successfully changed.'
>>> ftp.retrlines('LIST') # list directory contents
-rw-rw-r-- 1 1176 1176 1063 Jun 15 10:18 README
...
drwxr-sr-x 5 1176 1176 4096 Dec 19 2000 pool
drwxr-sr-x 4 1176 1176 4096 Nov 17 2008 project
drwxr-xr-x 3 1176 1176 4096 Oct 10 2012 tools
'226 Directory send OK.'
>>> with open('README', 'wb') as fp:
>>> ftp.retrbinary('RETR README', fp.write)
'226 Transfer complete.'
>>> ftp.quit()
'221 Goodbye.'
Referens¶
FTP-objekt¶
- class ftplib.FTP(host='', user='', passwd='', acct='', timeout=None, source_address=None, *, encoding='utf-8')¶
Returnerar en ny instans av
FTP
-klassen.- Parametrar:
host (str) – Värdnamnet att ansluta till. Om det anges anropas
connect(host)
implicit av konstruktören.user (str) – The username to log in with (default:
'anonymous'
). Om den anges anropaslogin(host, passwd, acct)
implicit av konstruktören.passwd (str) – The password to use when logging in. If not given, and if passwd is the empty string or
"-"
, a password will be automatically generated.acct (str) – Account information to be used for the
ACCT
FTP command. Few systems implement this. See RFC-959 for more details.timeout (float | None) – En timeout i sekunder för blockerande operationer som
connect()
(standard: den globala standardinställningen för timeout).source_address (tuple | None) – A 2-tuple
(host, port)
for the socket to bind to as its source address before connecting.encoding (str) – The encoding for directories and filenames (default:
'utf-8'
).
Klassen
FTP
har stöd förwith
, t.ex:>>> from ftplib import FTP >>> with FTP("ftp1.at.proftpd.org") as ftp: ... ftp.login() ... ftp.dir() ... '230 Anonymous login ok, restrictions apply.' dr-xr-xr-x 9 ftp ftp 154 May 6 10:43 . dr-xr-xr-x 9 ftp ftp 154 May 6 10:43 .. dr-xr-xr-x 5 ftp ftp 4096 May 6 10:43 CentOS dr-xr-xr-x 3 ftp ftp 18 Jul 10 2008 Fedora >>>
Ändrad i version 3.2: Stöd för
with
statement har lagts till.Ändrad i version 3.3: parametern source_address har lagts till.
Ändrad i version 3.9: Om parametern timeout är noll kommer den att skapa ett
ValueError
för att förhindra att en icke-blockerande socket skapas. Parametern encoding har lagts till och standardvärdet har ändrats från Latin-1 till UTF-8 för att följa RFC 2640.Flera
FTP
-metoder finns i två varianter: en för hantering av textfiler och en för binära filer. Metoderna namnges efter det kommando som används följt avlines
för textversionen ellerbinary
för den binära versionen.FTP
-instanser har följande metoder:- set_debuglevel(level)¶
Ställ in instansens felsökningsnivå som en
int
. Detta styr hur mycket felsökningsutdata som skrivs ut. Felsökningsnivåerna är:0
(standard): Ingen felsökning.1
: Producerar en måttlig mängd felsökningsutdata, i allmänhet en enda rad per begäran.2
eller högre: Producerar den maximala mängden felsökningsutdata och loggar varje rad som skickas och tas emot på kontrollanslutningen.
- connect(host='', port=0, timeout=None, source_address=None)¶
Anslut till den angivna värden och porten. Den här funktionen ska bara anropas en gång för varje instans; den ska inte anropas om ett host-argument angavs när
FTP
-instansen skapades. Alla andraFTP
-metoder kan endast anropas efter att en anslutning har upprättats.- Parametrar:
host (str) – Värd att ansluta till.
port (int) – TCP-porten att ansluta till (standard:
21
, enligt specifikationen för FTP-protokollet). Det är sällan nödvändigt att ange ett annat portnummer.timeout (float | None) – En timeout i sekunder för anslutningsförsöket (standard: den globala standardinställningen för timeout).
source_address (tuple | None) – A 2-tuple
(host, port)
for the socket to bind to as its source address before connecting.
Utlöser en auditing event
ftplib.connect
med argumentenself
,host
,port
.Ändrad i version 3.3: parametern source_address har lagts till.
- getwelcome()¶
Returnerar välkomstmeddelandet som skickas av servern som svar på den första anslutningen. (Meddelandet innehåller ibland friskrivningsklausuler eller hjälpinformation som kan vara relevant för användaren)
- login(user='anonymous', passwd='', acct='')¶
Logga in på den anslutna FTP-servern. Den här funktionen ska bara anropas en gång för varje instans, efter att en anslutning har upprättats; den ska inte anropas om argumenten host och user gavs när
FTP
-instansen skapades. De flesta FTP-kommandon är endast tillåtna efter att klienten har loggat in.- Parametrar:
user (str) – The username to log in with (default:
'anonymous'
).passwd (str) – The password to use when logging in. If not given, and if passwd is the empty string or
"-"
, a password will be automatically generated.acct (str) – Account information to be used for the
ACCT
FTP command. Few systems implement this. See RFC-959 for more details.
- abort()¶
Avbryter en filöverföring som pågår. Det är inte alltid det fungerar, men det är värt ett försök.
- sendcmd(cmd)¶
Skicka en enkel kommandosträng till servern och returnera svarssträngen.
Utlöser en auditing event
ftplib.sendcmd
med argumentenself
,cmd
.
- voidcmd(cmd)¶
Skicka en enkel kommandosträng till servern och hantera svaret. Returnera svarssträngen om svarskoden motsvarar framgång (koder i intervallet 200–299). Annars visas
error_reply
.Utlöser en auditing event
ftplib.sendcmd
med argumentenself
,cmd
.
- retrbinary(cmd, callback, blocksize=8192, rest=None)¶
Hämtar en fil i binärt överföringsläge.
- Parametrar:
cmd (str) – Ett lämpligt
RETR
-kommando:"RETR filename"
.callback (callable) – En anropsbar parameter med en enda parameter som anropas för varje block med data som tas emot, där det enda argumentet är data i form av
bytes
.blocksize (int) – Den maximala bitstorleken som ska läsas på lågnivåobjektet
socket
som skapats för att göra den faktiska överföringen. Detta motsvarar också den största storleken på data som kommer att skickas till callback. Standardvärde är8192
.rest (int) – Ett
REST
-kommando som ska skickas till servern. Se dokumentationen för parametern rest i metodentransfercmd()
.
- retrlines(cmd, callback=None)¶
Hämtar en fil- eller kataloglista i den kodning som anges av parametern encoding vid initieringen. cmd bör vara ett lämpligt
RETR
-kommando (seretrbinary()
) eller ett kommando somLIST
ellerNLST
(vanligtvis bara strängen'LIST'
).LIST
hämtar en lista med filer och information om dessa filer.NLST
hämtar en lista med filnamn. Funktionen callback anropas för varje rad med ett strängargument som innehåller raden utan efterföljande CRLF. Standardvärdet för callback skriver ut raden tillsys.stdout
.
- set_pasv(val)¶
Aktivera ”passivt” läge om val är true, annars inaktivera passivt läge. Passivt läge är aktiverat som standard.
- storbinary(cmd, fp, blocksize=8192, callback=None, rest=None)¶
Lagra en fil i binärt överföringsläge.
- Parametrar:
cmd (str) – Ett lämpligt
STOR
-kommando:"STOR filename"
.fp (file object) – Ett filobjekt (öppnat i binärt läge) som läses till EOF med hjälp av metoden
read()
i block av storleken blocksize för att tillhandahålla de data som ska lagras.blocksize (int) – Storleken på läsblocket. Standardvärdet är
8192
.callback (callable) – En anropsbar parameter med en enda parameter som anropas för varje block med data som skickas, där det enda argumentet är data i form av
bytes
.rest (int) – Ett
REST
-kommando som ska skickas till servern. Se dokumentationen för parametern rest i metodentransfercmd()
.
Ändrad i version 3.2: Parametern rest har lagts till.
- storlines(cmd, fp, callback=None)¶
Lagra en fil i linjeläge. cmd bör vara ett lämpligt
STOR
-kommando (sestorbinary()
). Rader läses till EOF från file object fp (öppnat i binärt läge) med hjälp av dessreadline()
-metod för att tillhandahålla de data som ska lagras. callback är en valfri enparameters callable som anropas på varje rad efter att den har skickats.
- transfercmd(cmd, rest=None)¶
Starta en överföring via dataanslutningen. Om överföringen är aktiv, skicka ett
EPRT
- ellerPORT
-kommando och det överföringskommando som anges av cmd, och acceptera anslutningen. Om servern är passiv, skicka ettEPSV
ellerPASV
-kommando, anslut till den och starta överföringskommandot. Returnera i vilket fall som helst socket för anslutningen.Om rest anges som tillval skickas ett
REST
-kommando till servern med rest som argument. rest är vanligtvis en byte-offset i den begärda filen, som talar om för servern att börja om med att skicka filens byte vid den begärda offseten, och hoppa över de första bytena. Observera dock att metodentransfercmd()
konverterar rest till en sträng med parametern encoding som anges vid initialiseringen, men att ingen kontroll görs av strängens innehåll. Om servern inte känner igen kommandotREST
, kommer etterror_reply
undantag att uppstå. Om detta händer, anropa helt enkelttransfercmd()
utan ett rest-argument.
- ntransfercmd(cmd, rest=None)¶
Som
transfercmd()
, men returnerar en tupel av dataanslutningen och den förväntade storleken på data. Om den förväntade storleken inte kunde beräknas returnerasNone
som den förväntade storleken. cmd och rest betyder samma sak som itransfercmd()
.
- mlsd(path='', facts=[])¶
Lista en katalog i ett standardiserat format med hjälp av kommandot
MLSD
(RFC 3659). Om path utelämnas antas den aktuella katalogen. facts är en lista med strängar som representerar den typ av information som önskas (t.ex.["type", "size", "perm"]
). Returnerar ett generatorobjekt som ger en tupel med två element för varje fil som hittas i sökvägen. Det första elementet är filnamnet, det andra är en ordbok som innehåller fakta om filnamnet. Innehållet i denna ordbok kan begränsas av argumentet facts, men det är inte säkert att servern returnerar alla begärda fakta.Tillagd i version 3.3.
- nlst(argument[, ...])¶
Returnerar en lista med filnamn som returneras av kommandot
NLST
. Det valfria argument är en katalog som ska listas (standard är den aktuella serverkatalogen). Flera argument kan användas för att skicka icke-standardiserade alternativ till kommandotNLST
.Anteckning
Om din server har stöd för kommandot erbjuder
mlsd()
ett bättre API.
- dir(argument[, ...])¶
Skapar en kataloglista som returneras av kommandot
LIST
och skriver ut den till standardutdata. Det valfria argument är en katalog som ska listas (standard är den aktuella serverkatalogen). Flera argument kan användas för att skicka icke-standardiserade alternativ till kommandotLIST
. Om det sista argumentet är en funktion används den som en callback-funktion som förretrlines()
; standardutskriften är tillsys.stdout
. Denna metod returnerarNone
.Anteckning
Om din server har stöd för kommandot erbjuder
mlsd()
ett bättre API.
- rename(fromname, toname)¶
Byt namn på filen fromname på servern till toname.
- delete(filename)¶
Tar bort filen med namnet filnamn från servern. Om det lyckas returneras texten i svaret, annars visas
error_perm
vid behörighetsfel ellererror_reply
vid andra fel.
- cwd(pathname)¶
Ange den aktuella katalogen på servern.
- mkd(pathname)¶
Skapa en ny katalog på servern.
- pwd()¶
Returnerar sökvägen till den aktuella katalogen på servern.
- rmd(dirname)¶
Ta bort katalogen med namnet dirname på servern.
- size(filename)¶
Begär storleken på filen med namnet filnamn på servern. Vid framgång returneras filens storlek som ett heltal, annars returneras
None
. Observera att kommandotSIZE
inte är standardiserat, men stöds av många vanliga serverimplementationer.
- quit()¶
Skicka ett
QUIT
-kommando till servern och stäng anslutningen. Detta är det ”artiga” sättet att stänga en anslutning, men det kan ge upphov till ett undantag om servern svarar med ett fel på kommandotQUIT
. Detta innebär ett anrop tillclose()
-metoden som görFTP
-instansen värdelös för efterföljande anrop (se nedan).
- close()¶
Stäng anslutningen ensidigt. Detta bör inte tillämpas på en redan stängd anslutning, t.ex. efter ett lyckat anrop till
quit()
. Efter detta anrop ska instansenFTP
inte användas mer (efter ett anrop tillclose()
ellerquit()
kan du inte öppna anslutningen igen genom att utfärda en annanlogin()
-metod).
FTP_TLS-objekt¶
- class ftplib.FTP_TLS(host='', user='', passwd='', acct='', *, context=None, timeout=None, source_address=None, encoding='utf-8')¶
En
FTP
-underklass som lägger till TLS-stöd för FTP enligt beskrivningen i RFC 4217. Anslut till port 21, vilket implicit säkrar FTP-kontrollanslutningen innan autentisering.Anteckning
Användaren måste uttryckligen säkra dataanslutningen genom att anropa metoden
prot_p()
.- Parametrar:
host (str) – Värdnamnet att ansluta till. Om det anges anropas
connect(host)
implicit av konstruktören.user (str) – The username to log in with (default:
'anonymous'
). Om den anges anropaslogin(host, passwd, acct)
implicit av konstruktören.passwd (str) – The password to use when logging in. If not given, and if passwd is the empty string or
"-"
, a password will be automatically generated.acct (str) – Account information to be used for the
ACCT
FTP command. Few systems implement this. See RFC-959 for more details.context (
ssl.SSLContext
) – Ett SSL-kontextobjekt som gör det möjligt att samla SSL-konfigurationsalternativ, certifikat och privata nycklar i en enda, potentiellt långlivad, struktur. Läs Överväganden om säkerhet för bästa praxis.timeout (float | None) – En tidsgräns i sekunder för blockering av åtgärder som
connect()
(standard: den globala standardinställningen för tidsgräns).source_address (tuple | None) – A 2-tuple
(host, port)
for the socket to bind to as its source address before connecting.encoding (str) – The encoding for directories and filenames (default:
'utf-8'
).
Tillagd i version 3.2.
Ändrad i version 3.3: Parametern source_address har lagts till.
Ändrad i version 3.4: Klassen stöder nu kontroll av värdnamn med
ssl.SSLContext.check_hostname
och Server Name Indication (sessl.HAS_SNI
).Ändrad i version 3.9: Om parametern timeout är noll kommer den att skapa ett
ValueError
för att förhindra att en icke-blockerande socket skapas. Parametern encoding har lagts till och standardvärdet har ändrats från Latin-1 till UTF-8 för att följa RFC 2640.Ändrad i version 3.12: De föråldrade parametrarna keyfile och certfile har tagits bort.
Här är ett exempel på en session som använder
FTP_TLS
class:>>> ftps = FTP_TLS('ftp.pureftpd.org') >>> ftps.login() '230 Anonymous user logged in' >>> ftps.prot_p() '200 Data protection level set to "private"' >>> ftps.nlst() ['6jack', 'OpenBSD', 'antilink', 'blogbench', 'bsdcam', 'clockspeed', 'djbdns-jedi', 'docs', 'eaccelerator-jedi', 'favicon.ico', 'francotone', 'fugu', 'ignore', 'libpuzzle', 'metalog', 'minidentd', 'misc', 'mysql-udf-global-user-variables', 'php-jenkins-hash', 'php-skein-hash', 'php-webdav', 'phpaudit', 'phpbench', 'pincaster', 'ping', 'posto', 'pub', 'public', 'public_keys', 'pure-ftpd', 'qscan', 'qtc', 'sharedance', 'skycache', 'sound', 'tmp', 'ucarp']
klassen
FTP_TLS
ärver från klassenFTP
och definierar dessa ytterligare metoder och attribut:- ssl_version¶
Den SSL-version som ska användas (standard är
ssl.PROTOCOL_SSLv23
).
- auth()¶
Skapa en säker kontrollanslutning med hjälp av TLS eller SSL, beroende på vad som anges i attributet
ssl_version
.Ändrad i version 3.4: Metoden stöder nu kontroll av värdnamn med
ssl.SSLContext.check_hostname
och Server Name Indication (sessl.HAS_SNI
).
- ccc()¶
Återställer kontrollkanalen till klartext. Detta kan vara användbart för att dra nytta av brandväggar som vet hur man hanterar NAT med icke-säker FTP utan att öppna fasta portar.
Tillagd i version 3.3.
- prot_p()¶
Upprätta en säker dataanslutning.
- prot_c()¶
Upprätta dataanslutning i klartext.
Modulvariabler¶
- exception ftplib.error_reply¶
Undantag som uppstår när ett oväntat svar tas emot från servern.
- exception ftplib.error_temp¶
Undantag som uppstår när en felkod som innebär ett temporärt fel (svarskoder i intervallet 400–499) tas emot.
- exception ftplib.error_perm¶
Undantag som uppstår när en felkod som innebär ett permanent fel (svarskoder i intervallet 500–599) tas emot.
- exception ftplib.error_proto¶
Undantag som uppstår när ett svar tas emot från servern som inte uppfyller svarsspecifikationerna för File Transfer Protocol, dvs. börjar med en siffra i intervallet 1–5.
- ftplib.all_errors¶
Uppsättningen av alla undantag (som en tupel) som metoder i
FTP
-instanser kan ge upphov till på grund av problem med FTP-anslutningen (i motsats till programmeringsfel som gjorts av den som anropar). Denna uppsättning innehåller de fyra undantagen som listas ovan samtOSError
ochEOFError
.
Se även
- Modul
netrc
Parser för filformatet
.netrc
. Filen.netrc
används vanligtvis av FTP-klienter för att läsa in information om användarautentisering innan användaren tillfrågas.