2012-03-18 2 views
-1

Я получаю сообщение, что «имя« ftp »не определено» Похоже, что я, возможно, тоже что-то перепутал.Загрузить файл FTP с помощью Argv

import ftplib 
from ftplib import FTP 
from sys import argv 
import os 

filename = argv 

ftp = FTP(ftp.server.com) 
ftp.login(username, password) 
ftp.storbinary('STOR %s', open('%s', 'rb')) (filename, filename) 
+0

'ftp = FTP ('ftp.server.com')' (примечание: котировки вокруг имени домена) – Manish

ответ

1

sys.argv - это список. Первый элемент в списке - это команда, следующие пункты - приведенные аргументы. Вероятно, вам нужно имя файла = argv [1].

Вам необходимо будет указать значения для имени пользователя и пароля для этого.

+0

FTP vs ftp используется в основном правильно. Обратите внимание, что имя «ftp» привязано как экземпляр построенного объекта FTP. Ошибка на самом деле происходит, потому что строка имени сервера не была указана. –

+0

Спасибо, что помогли мне понять аргв! Я получаю 'Файл« ftp.py », строка 9, в? ftp.login («имя пользователя», «пароль») Файл «/usr/lib64/python2.4/ftplib.py», строка 362, во входе , если resp [0] == '3': resp = self .sendcmd ('PASS' + passwd) Файл «/usr/lib64/python2.4/ftplib.py», строка 241, в sendcmd return self.getresp() Файл «/usr/lib64/python2.4/ ftplib.py ", строка 216, в getresp raise error_perm, resp ftplib.error_perm: 530 Неправильный вход. [' Я не могу различить, является ли это тем, у кого я ошибаюсь со сценарием ... –

+0

Вам нужно для получения фактических значений для имени пользователя и пароля. ftp.login ('wpm', 'flail_48') будет работать только в том случае, если wpm является пользователем bonafide ftp для сервера, и если пароль wpm на самом деле «flail_48». – Pierce

1

Ваше использование ftp.server.com является незаконным - вам нужно процитировать его. Python считает, что «ftp» в этот момент является идентификатором, который вы пытаетесь вытащить из поля «сервер», и, наконец, поле «com». Так как вы хотите, чтобы это была строка с именем name вместо этого, укажите его.

Кроме того, вы используете sys.argv. Argv - это список строк, а не одна строка. Ваше имя файла должно быть " ".join(argv[1:]) вместо этого, чтобы захватить командную строку примерно дословно. (argv [0] - это сам сценарий.)

Смежные вопросы