2012-03-18 78 views
-1

我收到一條消息,指出「name'ftp'沒有定義」 好像我可能已經搞砸了其他東西了。使用Argv上傳FTP文件

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 2012-03-18 21:07:49

回答

1

sys.argv中是一個列表。列表中的第一項是命令,下一項是給出的參數。你可能想要filename = argv [1]。

您需要給用戶名,密碼值以使其工作。

+0

FTP vs ftp大部分都是正常使用。請注意,名稱「ftp」被綁定爲構造的FTP對象的實例。實際上發生故障是因爲服務器名稱字符串未被引用。 – 2012-03-18 21:12:33

+0

感謝您幫助我理解argv!我得到 '文件「ftp.py」,第9行,在? ftp.login(「username」,「password」) 文件「/usr/lib64/python2.4/ftplib.py」,第362行,登錄 if resp [0] =='3':resp = self .sendcmd( 'PASS' + passwd中) 文件 「/usr/lib64/python2.4/ftplib.py」,線241,在sendcmd 返回self.getresp() 文件「/usr/lib64/python2.4/ ftplib.py「,第216行,在getresp raise error_perm,resp ftplib.error_perm:530登錄不正確。[' 我無法辨別這是否是某人我在做錯腳本... – 2012-03-19 13:29:30

+0

您需要擁有用戶名和密碼的實際值。 ftp.login('wpm','flail_48')只有在wpm是服務器的真正ftp用戶,並且wpm的密碼實際上是'flail_48'時纔會起作用。 – Pierce 2012-03-19 14:56:33

1

您對ftp.server.com的使用是非法的,您需要引用它。 Python認爲,「ftp」在這一點上是一個標識符,你試圖從字段「server」中拉出字段,最後是字段「com」。既然你希望它是一個重要的名字字符串,請引用它。

此外,您錯誤地使用了sys.argv。 Argv是一個字符串列表,而不是單個字符串。您的文件名應該是" ".join(argv[1:]),而不是逐字地捕獲命令行。 (argv [0]是腳本本身。)