Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FTP - как перехватить ошибку, Kак перехватить ошибку 
:(
    Опции темы
OzMod
  Дата 21.4.2019, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: нет
Всего: 1



когда я вписываю для проверки несуществующию дирректорию то вылетает ошибка ( ПОМОТИТЕ КАК ПЕРЕХВАТИТЬ ЭТУ ОШИБКУ)
ВОТ ПРИМЕР НЕБОЛЬШОЙ
Код

import sys, os, sys, getopt, ftplib, time
from ftplib import FTP
# SERVER AND PATH---------
FTPServer = input("Сервер: ")
print ("#----------------------------#")
FTPWay = input("Путь: ")
# LOGIN AND PASSWORD---------
FTPLogin = input("Логин: ")
FTPasswd = input("Пароль: ")
print ("")
print ("#----------------------------#")
def FTPConnect():
    global FTPWay,FTPWayDEL
    os.system("clear")
    d = []
    id = 0
    ftp = FTP(FTPServer)
    ftp.login(FTPLogin, FTPasswd)
    ftp.cwd(FTPWay)
    ftp.dir(d.append)
    DctF = ftp.nlst()
    ftp.quit()
    for dig in d:
        print (id,[dig])
        id = id + 1
    # OpenFTP---------
    print ("")
    print (" 0 - Сменить директорию ")
    
    OpFTPSelect = input("Выбирите действие: ")
    NEWDir = input("Введите адрес новой директории: ")
    FTPWay = FTPWay+"/"+NEWDir
    if OpFTPSelect == "0":
        if NEWDir in DctF:
            print ("Есть такой адрес.. ")             А Тут всё работает нормально
            FTPConnect()
        else:
            print ("Нет такого адреса.. ")            А вот тут ошибка не переходит на FTPConnect()
            FTPConnect()
            
FTPConnect()

PM MAIL   Вверх
Romikgy
Дата 21.4.2019, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Код

try:
     FTPConnect()
except:
    pass 



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
OzMod
  Дата 21.4.2019, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: нет
Всего: 1



Romikgy
Я пробовал так  ,  это немного не то ...как  вызвать функцию сначала
Код

import sys, os, sys, getopt, ftplib, time
from ftplib import FTP

# SERVER AND PATH---------
FTPServer = input("Сервер: ")
print ("#----------------------------#")
FTPWay = input("Путь: ")
# LOGIN AND PASSWORD---------
FTPLogin = input("Логин: ")
FTPasswd = input("Пароль: ")
print ("")
print ("#----------------------------#")
    
       
def FTPConnect():
    global FTPWay,FTPWayDEL
    os.system("clear")
    d = []
    id = 0
    ftp = FTP(FTPServer)
    ftp.login(FTPLogin, FTPasswd)
    ftp.cwd(FTPWay)
    ftp.dir(d.append)
    DctF = ftp.nlst()
    ftp.quit()
    for dig in d:
        print (id,[dig])
        id = id + 1

    # OpenFTP---------
    print ("")
    print (" 0 - Сменить директорию ")
    
    OpFTPSelect = input("Выбирите действие: ")
    NEWDir = input("Введите адрес новой директории: ")
    FTPWay = FTPWay+"/"+NEWDir
    if OpFTPSelect == "0":
        if NEWDir in DctF:
            print ("Есть такой адрес.. ")
            FTPConnect()      <=---  здесь она переходит коректно и запускаеет ее сначала
        else:
            print ("Нет такого адреса.. ")
            try:
                FTPConnect()   <=---А вот здесь нет если через try фильтровать полюбому будет  pass  а мне хотелось бы что бы запускалась FTPConnect() ( ЭТО РЕАЛЬНО СДЕЛАТЬ?)
            except:
                pass
            
FTPConnect()



Это сообщение отредактировал(а) OzMod - 21.4.2019, 19:00
PM MAIL   Вверх
Romikgy
Дата 21.4.2019, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Что вы хотите сделать ? (только четко и по пунктам)


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
OzMod
  Дата 22.4.2019, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: нет
Всего: 1



Romikgy,

Часть кода выше написаного. надо что бы в обоих случаях зперезапускалась функцыя FTPConnect()
 
Код

 if NEWDir in DctF:
            print ("Есть такой адрес.. ")
            FTPConnect()   <=---  здесь она переходит коректно и запускаеет ее сначала -- надо что бы  ниже  вызывалась фунция FTPConnect() как сдесь
        else:
            print ("Нет такого адреса.. ")
            try:
            FTPConnect()  <=---А вот здесь функция FTPConnect() не запускается как сделать что бы она запускалась
           except:
                pass



Это сообщение отредактировал(а) OzMod - 22.4.2019, 00:47
PM MAIL   Вверх
Romikgy
Дата 22.4.2019, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(OzMod @  21.4.2019,  23:40 Найти цитируемый пост)
 надо что бы в обоих случаях зперезапускалась функцыя FTPConnect()

зачем? Нельзя сделать весь функционал из уже имеющихся данных?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
OzMod
  Дата 22.4.2019, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: нет
Всего: 1



Romikgy

Код

зачем? Нельзя сделать весь функционал из уже имеющихся данных? 

Можно... 
Я и так ничего нового не добовляю,там и добавлять то в принципе нечего...
там просто чтобы не вылетала программа после того как она проверит и не найдёт нужной директории, проссто запускала эту функцию  ( FTPConnect() ) заново, короче что то типа цикла получается...
-------------------------------------------
Можешь свой пример привести - исправь выше написанный скрипт...
PM MAIL   Вверх
Romikgy
Дата 22.4.2019, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(OzMod @  22.4.2019,  10:03 Найти цитируемый пост)
Можешь свой пример привести 

не могу, потому как не понимаю, что надо в конечном итоге.. 
выбрали директорию, она есть, что с ней надо сделать?
выбрали директорию, ее нет, что с этим надо сделать?
Зачем создавать каждый раз новое соединение с фтп сервером? 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
OzMod
  Дата 22.4.2019, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: нет
Всего: 1



Romikgy
Код

1) выбрали директорию, она есть, что с ней надо сделать?
2) выбрали директорию, ее нет, что с этим надо сделать?
3) Зачем создавать каждый раз новое соединение с фтп сервером?  

-------------------------------------------------
1) Вывести сообщение к примеру ( Есть такой адрес.. ) .просто перейти в  эту директорию  - ( здесь все работает )
2) Вывести сообщение к примеру ( Нет такого адреса.. )  далее .перезапускаем функцию FTPConnect() - возвращаемся к запросу ( Выбирите действие:) и так по  кругу пока не выберу существующую директорию....  ( А здесь как раз эта блин ОШИБКА )
3) У меня вроде как создаётся соединение. считываю данные и закрывается соединение,и что бы не держать его открытым... оно открывается каждый раз когда я вызываю функцию FTPConnect()...
--------------------------------------------------
Теперь сможешь свой примерчик  собрать на базе моего - хотябы..... 

Это сообщение отредактировал(а) OzMod - 22.4.2019, 13:32
PM MAIL   Вверх
Romikgy
Дата 22.4.2019, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



все равно конечная цель остается для меня не понятна
вот код который показывает все файлы по всему фтп
Код

def getdir(ftp,x):
    lst=[]
    d=[]
    ftp.cwd(x)
    ftp.dir(d.append)
    nms=ftp.nlst()
    for ii in enumerate(d):
        i=ii[1]
        li=nms[ii[0]]
        if i[0]=='d':
            lst+=getdir(ftp,x+li+'/')
        else:
            lst.append(x+li)
    return lst
    

def FTPConnect():
    ftp = FTP(fip)
    ftp.login(flogin,fpass)
    dirs=[]
    dirs=getdir(ftp,'/')
    for i in dirs:
        print i
        
    ftp.quit()


FTPConnect()



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
OzMod
  Дата 22.4.2019, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: нет
Всего: 1



Romikgy
Круто по твоему та же песня .,,,
и ошибу ту же выдает ( error_perm: 550 250 CWD command successfulOzFILES/: No such file or directory   )
Даааа дилема  :(...
PM MAIL   Вверх
Romikgy
Дата 23.4.2019, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



такое ощущение , что в именах файлов есть запрещенные символы... программы фтп клиенты нормально открывают этот фтп?

Добавлено через 7 минут и 30 секунд
Цитата(OzMod @  22.4.2019,  17:52 Найти цитируемый пост)
error_perm: 550 

Код

The server may reject a CWD request using code 550:

     CWD /pubilc
     550 /pubilc: No such file or directory.

https://cr.yp.to/ftp/cwd.html

прав нету у вашего пользователя для просмотра этого файла/директории ...


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
OzMod
Дата 23.4.2019, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.1.2014

Репутация: нет
Всего: 1



Romikgy
 Всё нормально там с правами...
PM MAIL   Вверх
Romikgy
Дата 23.4.2019, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(OzMod @  23.4.2019,  12:28 Найти цитируемый пост)
Всё нормально там с правами... 

вам  виднее..


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1583 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.