2014-03-15 1 views
0

Я создал простой скрипт Python, который позволяет пользователям отправлять текстовые сообщения на телефоны через телефонные письма всех номеров. Я скомпилирован в .exe, поэтому мои друзья будут более доступными, но после того, как я их скомпилировал, я заметил, что .exe не принимает ввод так, как это делает интерпретатор Python. Я использовал команду:Python to Exe Создание ошибок форматирования ввода

address = input("What is the address?") 

для того, чтобы принять ответ в виде строки и использовать его в качестве значения данных в функции SMTP, показанном в сценарии:

import smtplib 
server = smtplib.SMTP('smtp.gmail.com:587') 
password = ["textFilter", "listCheck", "8*****ksd", "1231238dj", "312j38d", "12391jd", "1293ds", "12931d", "123c8we", "129ks9n2", "2139m2", "1s21231", "121i2m1", "16****on", "12983j", "231m8d9"] 
spamActivate = True 
messageSent = 0 
modPat = 0 
print "!Welcome to PySpammer v0.1 by CryptoFrost, all rights reserved to Damon %%%%% - 2014!\n\n" 
print "To start using this program, you will need to know your target address. The address is an email linked to all" \ 
     " phones. It uses the target number and the line extension. For example, a Verizon line would use [number]@vtext.com." \ 
     " If you don't know the target address, simply have the target text an email that you have access to. Enter the" \ 
     " email, check the received message, and use the sender's email that you will use for this program." \ 
     " Here are a few known extensions:\n\n" \ 
     "* Verizon - [number]@vtext.com\n" \ 
     "* AT&T - [number]@txt.att.net\n" \ 
     "* Straight-Talk - [number]@messaging.sprintpcs.com (Straight-Talk uses a few different addresses)\n" \ 
     "* Sprint - [number]@messaging.sprintpcs.com (Yes, it's the same as ST)\n" \ 
     "* Virgin Mobile - [number]@vmobl.com\n" \ 
     "* T-Mobile - [number]@tmomail.net\n" \ 
     "* Nextel - [number]@messaging.nextel.com\n\n" \ 
     "Make sure to use the 10-digit number!" 

address = input("What is the address?\n") 


server.starttls() 
server.login("[email protected]",password[2]) 

msg = input("What is the message?\n") 
while spamActivate: 
     server.sendmail("[email protected]", address, msg) 
     messageSent = messageSent + 1 
     modPat = modPat + 1 
     print(messageSent, "total messages sent!") 

# ["8******[email protected]", "8********[email protected]", "******[email protected]", "*******[email protected]"] 

Когда я компилирую это .exe и запустить его, я ввести адрес и получить это: enter image description here

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

ответ

0

В строках Python 2.7.X обрабатываются очень странно. Использование python версии 3.3.X, скорее всего, исправит его, но вам придется изменить некоторый синтаксис. например print - это функция в 3.3, поэтому вам нужны скобки и дополнительные материалы, которые вы можете найти здесь http://www.python.org/download/, чтобы получить последнюю версию python.

Это единственное решение, о котором я могу думать.

+0

Я фактически сделал прототип этой программы в Python 3.3.5, но мне пришлось преобразовать ее в 2.7.6, потому что я не смог найти действительный .py-.exe-конвертер, отличный от cx_freeze (у меня есть проблемы с). Я могу снова попробовать cx_freeze, но если он не работает, то метод, который я использую в сообщении, является единственным доступным. – Zulfe

+0

cx_freeze относительно прост в использовании: здесь легко следовать учебному пособию, чтобы выйти из https://www.youtube.com/watch?v=XHcDHSWRCRQ. Я пробовал его в 3.3.2, и он отлично работает, также работает с модулями , – Duffney