运行以下代码:
import os
import datetime
import ftplib
currdate = datetime.datetime.now()
formatdate = currdate.strftime("%m-%d-%Y %H%M")
def log():
fqn = os.uname()[1]
ext_ip = urllib2.urlopen('http://whatismyip.org').read()
log = open ('/Users/admin/Documents/locatelog.txt','w')
log.write(str("Asset: %s " % fqn))
log.write(str("Checking in from IP#: %s" % ext_ip))
smush = str(fqn +' @ ' + formatdate)
os.rename('/Users/admin/Documents/locatelog.txt','/Users/admin/Documents/%s.txt' % smush )
s = ftplib.FTP('10.7.1.71','username','password')
f = open('/Users/admin/Documents/%s.txt' % smush,'r')
s.storbinary("STOR /Users/admin/Documents/%s.txt" % smush,f)
生成以下错误:
^{pr2}$我觉得这行有点不对劲:
s.storbinary("STOR /Users/admin/Documents/%s.txt" % smush,f)
678538是我正在测试的主机…使用MacOSX10.5和Python2.5.1
不应该是
f = open('/Users/admin/Documents/%s.txt' % smush,'r')
?注意/
前面的/
如果不放第一个
/
,脚本会认为文件的路径是相对于当前目录(脚本运行的地方)的编辑:
我不太熟悉Python(我希望如此),但不应该是:
s.storbinary('STOR /Users/admin/Documents/%s.txt' % smush,f)
?在在您的示例中,Python将把字符串视为文本,您希望用%s插值smush的值
编辑2:
目录
/Users/admin/Documents/
是否存在于服务器上?如果没有,我想你必须在复制之前创建它们。(因为错误消息是关于某些文件/文件夹丢失的)。在你可以先自己创造。运行脚本。如果文件复制成功,则可以从脚本中添加目录的创建。在
删除文件名中的所有空格。例如在
smush = str(fqn +' @ ' + formatdate)
中,您在“@”前后放置一个空格。你的路径看起来像当你把它传给ftplib,它可能有问题。另一种方法是试着加引号,如
^{pr2}$编辑:
这个版本有效:问题是我写的是缓冲区,而不是文件。在
相关问题 更多 >
编程相关推荐