2016-03-09 4 views
0

Привет, я прокрутил эту простую программу для укусов encripting. Для этого пользователю требуется ввести простую строку после того, как этот пользователь удалит ярлык EOF (CTRL + D или CTRL + Z), но ничего не происходит, кроме ввода^D или^Z. Все нормально, когда я делаю это на Ubuntu (используя CTRL + D), но в окнах возникает эта проблема. (Windows 10, python 2.7) Есть ли другой способ ввода EOF в userinput в консоли. Программа:Ярлык EOF Python на Windows

import string 
table = string.maketrans("abcdefghijklmnopqrstuvwxyz", "nopqrstuvwxyzabcdefghijklm") 
import fileinput 
for line in fileinput.input(): 
    line = line.rstrip() 
    print string.translate(line, table) 

ответ

0

Вы можете использовать sys.stdin.readline(), что обеспечивает автоматическое EOL После того, как вы нажмете CTRL D, программа прекратит грациозно.

Модифицированный код

import string 
import atexit 
import sys 
#import fileinput 

table = string.maketrans("abcdefghijklmnopqrstuvwxyz", "nopqrstuvwxyzabcdefghijklm") 

while True: 
    line = sys.stdin.readline() #readline returns EOF by default after read 
    if line:     #If data is read 
     line = line.rstrip() #read line and remove whitespace 
     print string.translate(line, table) #print translated string 
    else: 
     sys.exit(0)    #exit on 'CTRL D' 

Программа выходного

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> ================================ RESTART ================================ 
>>> 
wefjdjbgngfpbgf 
jrswqwotatscots 
jgnfrejgrtnhkeritrevndsksdlv 
wtaserwtegauxrevgeriaqfxfqyi 
>>>