سؤال

تشغيل الرمز التالي:

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)

يولد الخطأ التالي:

ftplib.error_perm: 550 /Users/admin/Documents/678538.local @ 02-24-2010 1301.txt: No such file or directory

لدي شعور بأن هناك شيئًا ما خاطئًا في هذا الخط:

s.storbinary("STOR /Users/admin/Documents/%s.txt" % smush,f)

678538 هو المضيف الذي أختبره ... باستخدام Mac OS X 10.5 و Python 2.5.1

هل كانت مفيدة؟

المحلول 3

تعديل:

هذا الإصدار يعمل: المشكلة هي أنني كنت أكتب إلى المخزن المؤقت ، وليس للملف.

import os
import urllib2
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()
    smush = str(fqn + formatdate)
    s = ftplib.FTP('10.7.1.71','username','password')
    f = open('/Users/admin/Documents/%s.txt' % smush,'w')
    f.write(str("Asset: %s " % fqn))
    f.write('\n')
    f.write(str("Checking in from IP#: %s" % ext_ip))
    f.write('\n')
    f.write(str("On: %s" % formatdate))
    f.close
    f = open('/Users/admin/Documents/%s.txt' % smush,'rb')
    s.storbinary('STOR %s.txt' % smush , f)
    s.close
    f.close

نصائح أخرى

لا ينبغي أن يكونf = open('/Users/admin/Documents/%s.txt' % smush,'r') ؟ لاحظ ال / فى مواجهة Users

إذا لم تضع الأول /, ، سوف يعتقد البرنامج النصي أن المسار إلى الملف يتعلق بالدليل الحالي (حيث يتم تشغيل البرنامج النصي)

تعديل:

أنا لست على دراية ببيثون (أتمنى) ولكن لا ينبغي أن يكون:

s.storbinary('STOR /Users/admin/Documents/%s.txt' % smush,f) ?

في مثالك ، سوف يعامل Python سلسلتك على أنها حرفية وتريد أن تتفاعل بين قيمة Smush مع ٪ S

تحرير 2:

هل الدليل /Users/admin/Documents/ موجود على الخادم الخاص بك؟ إذا لم يكن الأمر كذلك ، أعتقد أنه سيتعين عليك إنشاءها قبل نسخ أي شيء. (نظرًا لأن رسالة الخطأ تدور حول بعض الملفات/المجلدات المفقودة).

يمكنك إنشاءها بنفسك أولاً. قم بتشغيل البرنامج النصي الخاص بك. إذا تم نسخ الملف بنجاح ، فيمكنك إضافة إنشاء الدلائل من داخل البرنامج النصي.

إزالة جميع المساحات من اسم الملف .EG في smush = str(fqn +' @ ' + formatdate), ، أنت تضع مساحة أمام "@" وبعدها. يبدو أن الطريق

/Users/admin/Documents/something @ something

وعندما تنقلها إلى ftplib ، قد تواجه مشكلة. طريقة أخرى هي محاولة وضع الاقتباسات ، على سبيل المثال

s.storbinary("STOR '/Users/admin/Documents/%s.txt'" % smush,f)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top