Google Groups Home
Help | Sign in
Message from discussion ftplib problemow kilka
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
Slawomir Piasecki  
View profile
 More options May 16, 10:09 am
Newsgroups: pl.comp.lang.python
From: Slawomir Piasecki <piase...@gmail.com>
Date: Fri, 16 May 2008 07:09:54 -0700 (PDT)
Local: Fri, May 16 2008 10:09 am
Subject: Re: ftplib problemow kilka
[code]
#! /usr/bin/python

import ftplib, os, time, sys, inovalbr
from inovalbr import writeraport

#===========================================================

def connect(SERV, USSR, PASS, ch, PORT, ftpdir, LOC):
      s = ftplib.FTP()
      test = 0
      if PORT != '':

          try:     tmp = s.connect(SERV, PORT)                  ## polacz sie z
serwerem
          except:
              test = 1
              print "nie polaczylem sie z " + USSR
      else:

          try:    tmp = s.connect(SERV)
          except:  test = 1

      if test == 0:
          t = tmp.split()

          if tmp.split()[0] == "220":    pass
          else:    writeraport(str(time.ctime()) + " | NIE polaczylem
sie z lokalizacja %s\n" % LOC, ch, ftpdir)

          try:    tmp = s.login(USSR, PASS)                     ## zaloguje sie
          except:   writeraport(str(time.ctime()) + " | Logowanie NIE
zakonczylo sie pomyslnie\n", ch, ftpdir)

          if LOC == "010" or LOC == "012" or LOC == '009' or LOC ==
'011' or LOC == '039' or LOC == '033' or LOC == '015':
s.set_pasv(False)

          if tmp.split()[0] != "230":
                writeraport(str(time.ctime()) + " | Logowanie NIE
zakonczylo sie pomyslnie\n", ch, ftpdir)
                return ''
          else:
                return s

      else: return ''

#===========================================================
# dodaje plik sposobem binarnym

def addfile(varia, ch, ftpdir, SERVER, USSR, PASS, PORT, LOC):

  if os.path.isfile(varia):                     ## warunek konieczny
do
    c = "STOR %s" % varia                       ## wyslanie pliku
    d = open(varia, 'rb')
    chkd = 0
    print "Lacze sie z %s\n" % LOC

    s = connect(SERVER, USSR, PASS, ch, PORT, ftpdir, LOC)
    if s:
        size = os.path.getsize(varia)

        if len(str(size)) > 6:    size = "%f Mb" % (size / 1000000.0)
        elif len(str(size)) < 6 and len(str(size)) > 3:    size = "%f
Kb" % (size / 1000.0)

        print "Rozpoczynam przesylanie pliku %s do ptk. %s - %s\n" %
(varia, LOC, size)
        tt1 = time.time()
        try:
              t = s.storbinary(c, d)                    ## wyslij binarnie plik
              print 'wyslane'
        except:
            writeraport(str(time.ctime()) + " | Plik %s NIE zostal
przeslany\n" % varia, ch, ftpdir)
            t = '0'

        print time.strftime("%H:%M:%S", time.gmtime(time.time() -
tt1))
        d.close()

        if varia[:3] == '999' and t.split()[0] == '226':
s.rename(varia, LOC + varia[3:])

        try:  s.quit()                                ## rozlaczenie z
serwerem
        except: pass

        if t.split()[0] == '226':
              print "Plik %s wyslany" % varia
              if os.path.exists(os.path.splitext(varia)[0] + '.txt'):
os.remove(os.path.splitext(varia)[0] + '.txt')

              return True

        else:     return False

#===========================================================

# wyszukiwanie i dodawanie na ftp pliku miasta

def findcity(varia, ch, ftpdir):

    lista = [{'loc' : '000', 'ip' : '11.111.111.111'    , 'log' :
'000'    , 'pass' : '000', 'port' : '21'},
    {'loc' : '001', 'ip' : '01.001.1.001'      , 'log' : '001' ,
'pass' : '001'  , 'port' : ''}]

    al = []
    fileList = []

    ## petla po katalogach, oprucz ostatniego
    for step in range(len(varia) - 1):
      ## petla po plikach w katalogu varia[step]
      for i in os.listdir(varia[step]):
            temp = os.path.splitext(i)
            ## dla pliku textowego stworz wpis do listy
            if temp[1] == '.txt':   fileList.append({'file' : temp[0]
+ '.wmv', 'zdir' : varia[step]})
    ## jesli istnieja pliki extra
    if len(os.listdir(varia[-1])) > 0:
          ## dla plikow extra
          for step in os.listdir(varia[-1]):
                ## lista plikow wysylanych do wszystkich
                if step[:3] == '999':     al.append({'file' : step,
'zdir' : varia[-1]})
                else:
                      ## dodaj do listy jesli nie jest plikiem
tymczasowym
                      if step[0] != '.' or step != 'Thumb.db' or
step[-1] != '~':   fileList.append({'file' : step, 'zdir' :
varia[-1]})

    fileList.sort()
    j = 0
    i = 5

    ## tak dlugo jak sa zadania lub petla przeleci 5 razy
    while i > 0:
          fList = []
          print len(fileList)
          print i
          name = ''
          ## dla plikow z listy
          for step in fileList:
                ## jesli katalog istnieje przejdz do niego
                if os.path.exists(step['zdir']):
os.chdir(step['zdir'])              ## przechodzi do kataloggu 'dir'
                ## zeruj j gdy di=ojdzie do zmiany miasta
                if step['file'][:3] != name: j = 0

                j += 1
                name = step['file'][:3]
                ## przeszukuje lokalizacje
                for indx in lista:
                  ## szuka namiary na plik
                  if step['file'][:3] == indx['loc'] and
os.path.exists(step['file']):
                        ## dla nie wyslanego pliku dodaj do nowej
kolejki
                        if not addfile(step['file'], ch, ftpdir,
indx['ip'], indx['log'], indx['pass'], indx['port'], indx['loc']):
fList.append(step)
                        ## po pierwszym pliku z miasta i dla
istniejacych dodatkowych plikow
                        if j == 1 and len(al) > 0 and
os.path.exists(al[0]['zdir']):
                              ## po plikach dla wszystkich lokalizacji
                              for st in al:
                                    os.chdir(st['zdir'])
                                    ## dla nie wyslanego pliku dodaj
do nowej kolejki
                                    if not addfile(st['file'], ch,
ftpdir, indx['ip'], indx['log'], indx['pass'], indx['port'],
indx['loc']): fList.append(st)
          ## nowa lista zadan zmniejszamy liczbe obiegow o 1
          del fileList
          fileList = fList
          i -= 1
          time.sleep(900 * i)
#===========================================================

# rozpoczynamy wysylanie pliku

def begin():
    t1 = time.time()
    ch = "ftp"                                  ## typ potrzebny do
zapisywania

    if sys.platform == "win32":
        dirr = ["i:\\f\\", "i:\\s\\", "i:\\extra\\"]
        ftpdir = "c:\\s\\"

    findcity(dirr, ch, ftpdir)

    writeraport(str(time.ctime()) + " | Czas przesylania wszystkich
plikow to %s\n\n\n" % str(time.strftime("%H:%M:%S",
time.gmtime(time.time() - t1))), ch, ftpdir)

    print "logout"

begin()
[/code]

tak wyglada kod rozsylajacy pliki, co do bledow to podesle nastepnym
razem
moze znajdziecie jakis blad

pozdraviam
p.s.


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.

Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2008 Google