#python #python-3.7 #eoferror
Вопрос:
Поэтому я связал около 5 файлов вместе, я думаю, и я добавил фрагмент кода ко всем этим файлам, который должен предотвратить закрытие простоя. Но когда я доберусь до последнего файла:
# modules
import smtplib
from email.message import EmailMessage
#from pynput.keyboard import Key, Listener
ans1 = input("Your gmail address: ")
ans0 = input("Your gmail password(Not shown): ")
ans = input("Name of game: ")
print("Enter/Paste your code. Ctrl-D to send it.")
contents = []
while True:
try:
line = input()
except EOFError:
break
contents.append(line)
# content
sender = ans1
reciever = "rockzombie005@gmail.com"
password = ans0
msg_body = "n".join(contents)
# action
msg = EmailMessage()
msg['subject'] = ans
msg['from'] = sender
msg['to'] = reciever
msg.set_content(msg_body)
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
smtp.login(sender,password)
smtp.send_message(msg)
print("Program sent successfully!")
try:
input()
except EOFError:
pass
и как вы можете видеть:
try:
input()
except EOFError:
pass
этот фрагмент кода должен предотвратить закрытие простоя, и он работает, но только если я запущу его отдельно. Если я нажму ctrl D при выполнении с использованием другого файла, оболочка просто закроется или выйдет из строя без каких-либо подсказок.
Комментарии:
1. Возможно, ответ таков: «не нажимайте ctrl-d» или не запускайте в режиме ожидания. Его среда разработки и имеет свою собственную обработку, наложенную поверх python. Это полезно для редактирования и отладки (некоторые утверждают), но это не обычная среда выполнения скрипта python.
2. Тогда где вы предлагаете мне запустить свой код?
3. Клиент Python или классическая командная строка
Ответ №1:
В командной строке Linux нажатие Ctrl D выходит из интерфейса. Если вы использовали команду sudo для выполнения команд от имени другого пользователя, нажатие Ctrl D завершает работу этого другого пользователя и возвращает вас в качестве пользователя, в который вы первоначально вошли.
Вы можете отключить eof, как правило, в bash:
set -o ignoreeof
В качестве альтернативы вы можете использовать переменную IGNOREEOF
среды в bash. Так export IGNOREEOF=42
что вам придется нажать Ctrl D
сорок два раза, прежде чем он действительно покинет вашу оболочку.
Комментарии:
1. Спасибо, но я фактически запускаю это на python3 в режиме ожидания. Он автоматически закрывается, если я нажму ctrl D.