Найти - Пользователи
Полная версия: Python робота с файлами
Начало » Python для новичков » Python робота с файлами
1
reabko14
 def Perekaz(self):
        self.schet = open(schet + '.txt','r')
        self.schet.seek(0)
        f = self.schet.read()
        self.schet.seek(0)                  
        self.schet.close()                    
        self.schet = open(schet + '.txt','w')
        n = int(input("Введите суму для перевода: "))
        f = int(f)
        if f > n:                           
            self.schet.write(str(int(f-n)))
            self.schet.seek(0)
            self.schet.close()
        else:
                print("У вас недостаточно средств на счету! \n")
                self.schet.close()
                return 0
        # это все работает  
        
        nazFaila = input("Введите номер счета для перевода: ") # делаю проверку если существует такой файл
        try:
            self.schet = open(nazFaila + '.txt','r') 
        except Exception:
            print("не удалось открыть файл")
        else:
            m = self.schet.read()
            self.schet.close()
            self.schet = open(nazFaila + '.txt','w')  #[b][u] когда открываю файл в режиме 'w', дальше код не выполняется почему?[/u][/b]
            c = int(n+m) # это не выполняется 
            print(c)         # это тоже
            self.schet.write(str(int(n+m)))  # и вот это
            self.schet.close() # и это
        finally: 
            return 0  # выполняется это и всё
PEHDOM
вот тут c = int(n+m)
n у вас int m - str, соответвенно n+m должно вызывать TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’
но почемуто в конструкции try-except-else если исключение вызываеться в else то он не бросает еще одно исключение а просто завершает блок else. ХЗ так ли задумано, или это баг.
Надеюсь что это у вас лаборатрная или на крайний случай курсовая, потому как у меня, как у работника банка, ваш код вызывает только слезы.
py.user.next
PEHDOM
но почемуто в конструкции try-except-else если исключение вызываеться в else то он не бросает еще одно исключение а просто завершает блок else. ХЗ так ли задумано, или это баг.
Всё порождается
  
>>> try:
...     1
...     print('try')
... except:
...     2
...     print('except')
... else:
...     1/0
...     print('else')
... finally:
...     print('finally')
... 
1
try
finally
Traceback (most recent call last):
  File "<stdin>", line 8, in <module>
ZeroDivisionError: division by zero
>>>
PEHDOM
py.user.next
Всё порождается
Соглсен, но почемуто в таком виде не порождает
 def test():
    try:
        1
        print('try')
    except Exception:
        2
        print('except')
    else:
        1+'a'
        print('else')
    finally:
        print('finally')
        return 0
>>> 
try
finally
>>> 
test()
return во всем виноват в finally: без него все исключения порождаються, с ним else просто прерывается.
если return вынести из try… filally то все ок.
py.user.next
А здесь вот написано, что так и должно быть
python.org. try … except
If the finally clause executes a return or break statement, the saved exception is discarded:
>>> def f():
... try:
... 1/0
... finally:
... return 42
...
>>> f()
42
PEHDOM
py.user.next
А здесь вот написано, что так и должно быть
хмм, а куда я раньше смотрел? провтыкал видать…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB