@markanez

TypeError: 'NoneType' object cannot be interpreted as an integer как исправить?

Имеется такой код
import os
import time

krik = os.startfile(r'звуки\крик.mp3')
time.sleep(5)
os.close(krik)


после компиляции выскакивает данная ошибка
TypeError: 'NoneType' object cannot be interpreted as an integer

Как её исправить?
  • Вопрос задан
  • 238 просмотров
Пригласить эксперта
Ответы на вопрос 2
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Я думаю, что os.startfile(r'звуки\крик.mp3') возвращает None, соответственно в переменной krik содержится None, соответственно когда это None попадает на вход os.close(), вы получаете ошибку.

Я бы рекомендовал вам во-первых изучить объектную модель языка python, чтобы осознавать, что именно вы делаете. Во-вторых, изучить документацию, касающуюся используемых библиотек и методов. В общем, это легко сделать, выполнив команду help(os.startfile)
и
help(os.close)
В частности, метод os.close() требует на вход file descriptor, т.е. число, int. Значит, надо получить дескриптор и скормить его методу.

P.s. Ну, кстати, как указал уважаемый Vindicar os.close не закрывает запущенный процесс. Это надо копать в сторону команды kill, я так думаю.
Ответ написан
Vindicar
@Vindicar
RTFM!
startfile() returns as soon as the associated application is launched. There is no option to wait for the application to close, and no way to retrieve the application’s exit status.


Ты не имеешь контроля над приложением, после того как ты его запустил через startfile(). Функция возвращает None и только None.

os.close() предназначена для закрытия файловых дескрипторов, почему ты вообще пытаешься её использовать тут?

Короче, ты творишь какую-то ересь, и ошибка тут не в том, что None нельзя преобразовать в целое.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы