В настоящее время я использую FileChooserController от Kivy при выборе файла. Я хочу сделать свое собственное указанное действие, когда FileChooserController получает путь к файлу, который не найден в системе (FileNotFoundError). Однако, когда я попытался использовать "try:"
и "except FileNotFoundError:"
, программа не выполняет действия под моим "except FileNotFoundError:"
. Программа смогла определить исключение, однако она не отвечает на мои "except FileNotFoundError:
". Есть ли способ решить эту проблему?
Я попытался прочитать и понять ExceptionHandler и ExceptionManager в Kivy. Однако я не могу применить это к моей проблеме. И если у вас есть пример того, как их использовать, вы можете предоставить мне и объяснить. Спасибо
https://kivy.org/doc/stable/api-kivy.base.html?highlight=exceptionhandler#kivy.base.ExceptionHandler
.py код
class Browse(Popup):
title = StringProperty('BROWSE')
path = StringProperty('/')
filters = ListProperty(['*.csv'])
callback = ObjectProperty()
def __init__(self, callback, path, *args, **kwargs):
super().__init__(*args, **kwargs)
self.callback = callback
try:
self.path = path
except FileNotFoundError:
popup = Message(title='ERROR',
message='Path not found. Returning to root folder.')
popup.open()
print('opened')
self.path = '/'
.kv код
<Browse>:
size_hint: None, None
size: 474, 474
BoxLayout:
orientation: 'vertical'
FileChooserIconView:
id: filechooser
filters: root.filters
path: root.path
on_submit: root.select(self.selection)
GridLayout:
size_hint: None, None,
size: root.width - 25, 45
cols: 4
rows: 1
Widget:
Widget:
Button:
text: 'SELECT'
background_normal: 'assets/theme/positive.png'
background_down: 'assets/theme/positive_pressed.png'
on_release: root.select(filechooser.selection)
Консоль показывает это сообщение, когда я пытаюсь ввести неверный путь к файлу.
[ОШИБКА] Невозможно открыть каталог
Это также показывает это сообщение, указывающее, что есть
FileNotFoundError.
FileNotFoundError: [Errno 2] Нет такого файла или каталога: '/ 234234'
Перед сообщением выше я тоже получаю эти сообщения.
Traceback (последний вызов был последним): File
"/Home/kebaranas/miniconda3/lib/python3.6/site-packages/kivy/uix/filechooser.py",
строка 828, в _generate_file_entries
для индекса, всего, элемент в self._add_files (путь): файл "/home/kebaranas/miniconda3/lib/python3.6/site-packages/kivy/uix/filechooser.py",
строка 849, в _add_files
для f в self.file_system.listdir (путь): файл "/home/kebaranas/miniconda3/lib/python3.6/site-packages/kivy/uix/filechooser.py",
строка 168, в listdir
возвращение listdir (fn)