Съдържание
Python Това е език, който ни позволява да включим работата с различните функционалности на операционните системи по лесен и интуитивен начин, благодарение на големия брой библиотеки и документация, които съществуват в мрежата безплатно и добре обяснени.Една от най -силните страни на този език е работата с мрежови протоколи, сред които можем да споменем FTP и нещо по -често срещано като имейл, с това можем да разработим програми или приложения, които ни позволяват да качваме файлове на отдалечени компютри по автоматизиран начин, ако желаем, без да е необходимо да прибягваме до други инструменти извън екосистемата на Python.
Протоколът FTP ни позволява да извършваме трансфери на файлове чрез връзка в мрежа. Обикновено това е протоколът, който използваме за отдалечено свързване със сървъри и по този начин манипулираме файлове, обикновено порт 21Това обаче изцяло зависи от вкуса на потребителя, така че ако видим друг порт, не е изненадващо, че това е персонализирана инсталация.
За да взаимодействаме с този протокол, се нуждаем от две неща, първото е сървър, който е в ефир и е достъпен за нашата мрежа, може да бъде в същата мрежа или може би в интернет. Второто нещо, което е необходимо, е клиент, който може да изпраща и получава информация от споменатия сървър, този клиент трябва да има възможност да използва портовете, посочени от услугата, и установеното удостоверяване.
Направете клиент Python че мога да установя връзка FTP От нулата е възможно, но усилията, които би ни отнело, биха били значителни и в крайна сметка може да са напразни, ако не се нуждаем от нещо специално.
За да се избегнат неудобства и ненужно развитие Python ни предоставя библиотека, която вече ни помага с голяма част от работата. Говорим за ftplib, той съдържа пълни и вече тествани и усъвършенствани методи, които улесняват комуникацията, използвайки протокола за прехвърляне на файлове FTP.
Как да използвате библиотеката?За да използваме тази библиотека, просто трябва да я включим в нашата програма, като използваме инструкциите внос и тогава започваме нормалното си развитие. В следния пример ще направим малка клиентска програма, която може да се свърже със сървър FTP, в този случай ще използваме услугата kernel.org който е уебсайт на Linux и с това ще изброим наличните файлове.
Избираме този сървър, защото не се нуждае от удостоверяване и ни позволява да използваме анонимен режим. Нека тогава видим кода и след това ще направим съответното обяснение, единственото изискване, от което се нуждаем, е да имаме Python 2.7 и интернет връзка:
#! / usr / bin / env python PATH_FTP_SERVER = 'ftp.kernel.org' импортиране ftplib def client_ftp_connection (сървър, потребителско име, поща): # отворете връзката ftp = ftplib.FTP (сървър, потребителско име, поща) # ние изброяваме списъка файлове в директорията / pub ftp.cwd (" / pub") print "Файлове, налични в% s:"% сървърни файлове = ftp.dir () печат на файлове ftp.quit () if __name__ == '__main__': client_ftp_conexion ( server = FTP_SERVER_PATH, username = 'anonymous', mail='[email protected] ',)
Първото нещо, което правим, е да дефинираме променлива във файла, която ще съдържа пътя на сървъра FTP с който искаме да осъществим връзката, в случая е така ftp .kernel.org, от тук можем да получим информация за ядрото Linux.
Следващото действие, което правим внос от книжарницата ftplib по -горе, с това гарантираме възможността да използваме всички необходими методи за свързване със сървъра, дефиниран по -горе, за това използваме метода FTP от същото, там ще преминем маршрута, потребителското име и имейл.
Проверка на връзкатаЗа да проверим дали връзката работи, използваме командата cwd за да отидете в директория и след това с dir () Можем да изброим файловете в тази папка на сървъра, след като приключим с нашата процедура, извикваме метода напусни () за да прекратите сесията и да прекъснете връзката.
Този код трябва да влезе във файл с името, което искаме с разширение .py така че нашият преводач Python може да го изпълни, за това в пътя, където се намира нашият файл, го изпълняваме със запазената дума python и името на нашия файл, което трябва да ни даде нещо подобно на това, което виждаме на следния екран:
Увеличете
ИзискванеДопълнителното изискване, от което се нуждаем за това упражнение, е да имаме a локален FTP сървър в нашето тестово оборудване, за това ако имаме Linux система можем да използваме wu-ftp, но ако сме на платформата Windows можем да използваме Filezilla Server, който е безплатен за използване.
Какъвто и сървър да използваме, трябва да имаме разрешения или възможност за анонимен достъп, така или иначе в следния код ще видим по -добър начин как можем да качваме файлове.
Ние трябва създайте потребителски и FTP акаунт В локалния сървър, който създаваме, за да можем да се възползваме от този пример, той работи и с отдалечени сървъри, просто трябва да сме сигурни, че сме актуализирали своите идентификационни данни. След това можем да използваме следния код:
#! / usr / bin / env python импортиране os импортиране argparse внос ftplib внос getpass SERVER_FTP_LOCAL = 'localhost' FILE_TO_UPLOAD = 'example.txt' def upload_ftp (сървър, потребителско име, парола, upload_file): отпечатайте "Свързване към сървъра:% s" % сървър ftp = ftplib.FTP (сървър) печат "Влизане като: потребител =% s"% потребителско име ftp.login (потребителско име, парола) ext = os.path.splitext (upload_file) [1] ако ext в (". txt "," .htm "," .html "): ftp.storlines (" STOR " + upload_file, open (upload_file)) else: ftp.storbinary (" STOR " + upload_file, open (upload_file," rb "), 1024) отпечатайте "Качен файл:% s"% upload_file, ако __name__ == '__main__': parser = argparse.ArgumentParser (description = 'Пример за качване на FTP файлове') parser.add_argument ('- server', action = "store" , dest = "server", default = SERVER_FTP_LOCAL) parser.add_argument ('- file', action = "store", dest = "file_upload", default = FILE_TO_UPLOAD) parser.add_argument ('- user', action = "store" , dest = "n user_name ", default = getpass.getuser ()) application_parameters = parser.parse_args () сървър, upload_file, user_name = application_parameters.server, application_parameters. upload_file, application_parameters.user_name парола: парола: getpass.getpass паролата (prompt ="): getpass.getpass на (prompt = ") upload_ftp (сървър, потребителско име, парола, upload_file)
В този пример, освен импортирането на библиотеката ftplib, ние също импортираме библиотеки Вие за да имаме достъп до командите на операционната система, ние допълнително използваме argparse Y getpass за да обработим използването на параметри, въведени от потребителя и по този начин да направим нашата програма по -динамична.
След това дефинираме няколко константи, с които ще установим сървъра, и примерен файл, който ще качим в папката, определена от нашия потребител FTP. Следващата стъпка е да отворите връзката FTPВ този случай обаче ще използваме потребителско име и парола, тъй като на теория имаме достъп до сървър с неанонимно удостоверяване, това е най-вече от съображения за сигурност и също така, за да покажем, че нашият пример работи в други случаи.
Продължаваме да оценяваме разширението на нашия файл, с това ще видим дали е текстов файл, за това използваме storlines (), с които няма да повлияем на съдържанието на същото, в случай че е друго разширение различно от дефинираните ще използваме метода storbinary () да може да предава файла в първоначалния му вид с двоичното му съдържание, като по този начин не го поврежда и позволява да продължи да се използва.
Накрая използваме argparse () за да можем да вземем аргументите, които потребителят може да въведе, за да използва нашата програма, с изключение на това, че ако не поставя стойности, ще бъдат взети глобалните стойности, дефинирани в нашата програма. Изпълняваме нашата програма и ако всичко е излязло правилно, ще можем да видим следния изход в нашата конзола:
Увеличете
С това приключваме този урок, научихме се как да правим връзка FTP от програма, направена в Python, важното тук е да се отбележи как с методи, които идват от стандартната библиотека на Python успяхме да изпълним функционалности, които иначе биха ни отнели много време, освен голямото количество код, който трябваше да бъде генериран. Препоръчваме да продължите да проучвате официалната документация на книжарницата ftplib, по този начин значително ще повишим уменията си в света Python, като по този начин отваря вратите да бъдем по -ефективни като разработчици в този силно конкурентен технологичен свят.