Chirurgia spinală minim invazivă
Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical. Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale. www.neurohope.ro |
FTP Server in Python
Last Updated: Nov 25 2015 19:11, Started by
nikushoru
, Nov 25 2015 19:11
·
0
#1
Posted 25 November 2015 - 19:11
Salut, am un server ftp si trebuie sa modific functia de stor ca sa pot incarca un director intreg. Nu prea cunosc pythonul. Vrea cineva sa ma ajute ?
import os, socket, threading, time from ftplib import FTP import sys import chilkat import ftplib #import ftptools #import traceback allow_delete = True local_ip = socket.gethostbyname(socket.gethostname()) #local_ip = "192.168.43.59" #local_port = 21 local_port = 9859 currdir=os.path.abspath('./ftp') class FTPserverThread(threading.Thread): def __init__(self,(conn,addr)): self.conn=conn self.addr=addr self.basewd=currdir self.cwd=self.basewd self.rest=False self.mode = None self.pasv_mode=False threading.Thread.__init__(self) def run(self): self.conn.send('220 Welcome!\r\n') while True: cmd=self.conn.recv(256) if not cmd: break else: print 'Recieved:',cmd try: func=getattr(self,cmd[:4].strip().upper()) func(cmd) except Exception,e: print 'ERROR:',e #traceback.print_exc() self.conn.send('500 Sorry.\r\n') def SYST(self,cmd): self.conn.send('215 UNIX Type\r\n') def OPTS(self,cmd): if cmd[5:-2].upper()=='UTF8 ON': self.conn.send('200 OK.\r\n') else: self.conn.send('451 Sorry.\r\n') def USER(self,cmd): self.conn.send('331 OK.\r\n') def PASS(self,cmd): self.conn.send('230 OK.\r\n') #self.conn.send('530 Incorrect.\r\n') def QUIT(self,cmd): self.conn.send('221 Goodbye.\r\n') def TYPE(self,cmd): self.mode=cmd[5] self.conn.send('200 Binary mode.\r\n') def PWD(self,cmd): cwd=os.path.relpath(self.cwd,self.basewd) if cwd=='.': cwd='/' else: cwd='/'+cwd self.conn.send('257 \"%s\"\r\n' % cwd) def CWD(self,cmd): chwd=cmd[4:-2] if chwd=='/': self.cwd=self.basewd elif chwd[0]=='/': self.cwd=os.path.join(self.basewd,chwd[1:]) else: self.cwd=os.path.join(self.cwd,chwd) self.conn.send('250 OK.\r\n') def PORT(self,cmd): if self.pasv_mode: self.servsock.close() self.pasv_mode = False l=cmd[5:].split(',') self.dataAddr='.'.join(l[:4]) self.dataPort=(int(l[4])<<8)+int(l[5]) self.conn.send('200 Get port.\r\n') def PASV(self,cmd): # from http://goo.gl/3if2U self.pasv_mode = True self.servsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) self.servsock.bind((local_ip,0)) self.servsock.listen(1) ip, port = self.servsock.getsockname() print 'open', ip, port self.conn.send('227 Entering Passive Mode (%s,%u,%u).\r\n' % (','.join(ip.split('.')), port>>8&0xFF, port&0xFF)) def start_datasock(self): if self.pasv_mode: self.datasock, addr = self.servsock.accept() print 'connect:', addr else: self.datasock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) self.datasock.connect((self.dataAddr,self.dataPort)) def stop_datasock(self): self.datasock.close() if self.pasv_mode: self.servsock.close() def LIST(self,cmd): self.conn.send('150 Here comes the directory listing.\r\n') print 'list:', self.cwd self.start_datasock() for t in os.listdir(self.cwd): k=self.toListItem(os.path.join(self.cwd,t)) self.datasock.send(k+'\r\n') self.stop_datasock() self.conn.send('226 Directory send OK.\r\n') def toListItem(self,fn): st=os.stat(fn) fullmode='rwxrwxrwx' mode='' for i in range(9): mode+=((st.st_mode>>(8-i))&1) and fullmode[i] or '-' d=(os.path.isdir(fn)) and 'd' or '-' ftime=time.strftime(' %b %d %H:%M ', time.gmtime(st.st_mtime)) return d+mode+' 1 user group '+str(st.st_size)+ftime+os.path.basename(fn) def MKD(self,cmd): dn=os.path.join(self.cwd,cmd[4:-2]) os.mkdir(dn) self.conn.send('257 Directory created.\r\n') def RMD(self,cmd): dn=os.path.join(self.cwd,cmd[4:-2]) if allow_delete: os.rmdir(dn) self.conn.send('250 Directory deleted.\r\n') else: self.conn.send('450 Not allowed.\r\n') def DELE(self,cmd): fn=os.path.join(self.cwd,cmd[5:-2]) if allow_delete: os.remove(fn) self.conn.send('250 File deleted.\r\n') else: self.conn.send('450 Not allowed.\r\n') def RETR(self,cmd): fn=os.path.join(self.cwd,cmd[5:-2]) #print 'Downloading:',fn #if self.mode=='I': # fi=open(fn,'rb') #else: # fi=open(fn,'r') #self.conn.send('150 Opening data connection.\r\n') #if self.rest: # fi.seek(self.pos) # self.rest=False #data= fi.read(1024) #self.start_datasock() #while data: # self.datasock.send(data) # data=fi.read(1024) #fi.close() #self.stop_datasock() #self.conn.send('226 Transfer complete.\r\n') #ftp = chilkat.CkFtp2() #success = ftp.UnlockComponent("Anything for 30-day trial") #ftp.put_Hostname("127.0.1.1") #ftp.put_Username("test") #ftp.put_Password("test") #success = ftp.Connect() #success = ftp.DownloadTree(fn) #if (success != True): #print(ftp.lastErrorText()) #sys.exit() @staticmethod def uploadThis(self,path): files = os.listdir(path) os.chdir(path) for f in files: if os.path.isfile(path + r'\{}'.format(f)): fh = open(f, 'rb') self.storbinary('STOR %s' % f, fh) fh.close() elif os.path.isdir(path + r'\{}'.format(f)): self.mkd(f) self.cwd(f) uploadThis(path + r'\{}'.format(f)) self.cwd('..') os.chdir('..') def STOR(self,cmd): fn=os.path.join(self.cwd,cmd[5:-2]) print 'Uplaoding:',fn """ if self.mode and self.mode=='I': fo=open(fn,'wb') else: fo=open(fn,'w') self.conn.send('150 Opening data connection.\r\n') self.start_datasock() while True: data=self.datasock.recv(1024) if not data: break fo.write(data) fo.close() self.stop_datasock() self.conn.send('226 Transfer complete.\r\n') """ self.uploadThis(sefl, fn) class FTPserver(threading.Thread): def __init__(self): self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.bind((local_ip,local_port)) threading.Thread.__init__(self) def run(self): self.sock.listen(5) while True: th=FTPserverThread(self.sock.accept()) th.daemon=True th.start() def stop(self): self.sock.close() if __name__=='__main__': ftp=FTPserver() ftp.daemon=True ftp.start() print 'On', local_ip, ':', local_port raw_input('Enter to end...\n') ftp.stop() Primesc eroarea data : Uplaoding: /home/nicolae/Documents/ftp/transfer ERROR: 'str' object is not callable Edited by nikushoru, 25 November 2015 - 19:21. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users