raw_input不等待输入

时间:2013-02-06 17:28:58

标签: python input raw-input

我在python 2.7.1中遇到了raw_input()的问题。脚本向secon中的用户询问一些输入,第一个是raw_input()。在第一个循环中,如果if if request.upper()=='S' or request.upper()=='Y':为True,则脚本运行if的主体,然后脚本转到第二个循环,然后jobNameTN = raw_input('...' % files[j]) jobTimeMO = raw_input('...' % jobNameTN),脚本跳转到jobTimeMO = raw_input('...' % jobNameTN)并且不要不要在之前的raw_input()中询问。

def taskInstaller():
#
#CREACION DE LOS TASK
#
#logger.log
print('\nINFO: instalando tareas de los parsers')
#n,s,r,v = util.systemInfo()
for root, dirs, files in os.walk("c:\script v3\\"):
    break
userU = raw_input('usuario administrador: ')
#equipoS = raw_input('nombre del equipo: ')
r='XP'
if r=='XP':
    paswP = raw_input('password usuario administrador: ')

#
#PARCHE DE ERROR EN WINDOWS XP
#
m=0
for fl in files:
    files[m] = root+fl
    print files[m]
    m+=1

jobNameTN=''
jobTimeMO=''
for j in range(len(files)):
    print '>',jobNameTN,'<'
    jobNameTN = raw_input('\nEscriba un Identificador para la tarea de %s:' % files[j])#confilcto: este raw_input esta tomando valor vacio si en lo anterior se elije forzar la tarea
    print '>',jobNameTN,'<'
    jobTimeMO = raw_input('\nTiempo de recurrencia de la tarea %s:' % jobNameTN)
    print '>',jobTimeMO,'<'

    #en equipo local
    if r == 'XP':
        #paswP = raw_input('password: ')
        #CON PASSWORD (solo en windows XP)
        #print('schtasks /CREATE /SC MINUTE /MO %s /RU %s /RP %s /TN "%s" /TR "\\"%s\" /ST 09:00:00' % (jobTimeMO,userU,paswP,jobNameTN,files))
        #os.system('schtasks /CREATE /SC MINUTE /MO %s /RU %s /RP %s /TN "%s" /TR "\\"%s\" /ST 09:00:00' % (jobTimeMO,userU,paswP,jobNameTN,files[j]))
        a = subprocess.Popen('schtasks /CREATE /SC MINUTE /MO %s /RU %s /RP %s /TN "%s" /TR "\\"%s\" /ST 09:00:00' % (jobTimeMO,userU,paswP,jobNameTN,files[j])).wait()
        if a!=0:
            #logger.log
            print('\nERROR: no se ha logrado generar la tarea, desea forzarla ? codigo error:%d' % a)
            request = raw_input('\nWARNING: puede que la tarea en conflicto sea eliminada (s/n): ')
            if request.upper()=='S' or request.upper()=='Y':
                #logger.log
                print('\nINFO: forzando al creacion de la tarea...')
                subprocess.Popen('schtasks /DELETE /TN "%s"' % jobNameTN).wait()
                subprocess.Popen('schtasks /CREATE /SC MINUTE /MO %s /RU %s /RP %s /TN "%s" /TR "\\"%s\" /ST 09:00:00' % (jobTimeMO,userU,paswP,jobNameTN,files[j])).wait()
                #logger.log
                print('\nINFO: se ha eliminado el conflicto y creado la tarea con exito')
            else:
                #logger.log
                print('\nWARNING: la tarea para el script "%s" fue omitido por el usuario' % files[j])

        '''return:
        Error: la tarea programada especificada ya existe en el sistema.
        1'''
    elif r == '7':
        #SIN PASSWORD (solo windows 7)
        #print('schtasks /CREATE /SC MINUTE /MO %s /RU %s /NP /TN "%s" /TR "\%s\" /ST 09:00:00' % (jobTimeMO,userU,jobNameTN,files[j]))
        #os.system('schtasks /CREATE /SC MINUTE /MO %s /RU %s /NP /TN "%s" /TR "\%s\" /ST 09:00:00' % (jobTimeMO,userU,jobNameTN,files[j]))
        a = subprocess.Popen('schtasks /CREATE /SC MINUTE /MO %s /RU %s /NP /TN "%s" /TR "\%s\" /ST 09:00:00' % (jobTimeMO,userU,jobNameTN,files[j])).wait()
        if a!=0:
            logger.log('\nERROR: no se ha logrado generar la tarea, desea forzarla ? codigo error:%d' % a)
            request = raw_input('\nWARNING: puede que la tarea en conflicto sea eliminada (s/n): ')
            if request.upper()=='S' or request.upper()=='Y':
                logger.log('\nINFO: forzando al creacion de la tarea...')
                if subprocess.Popen('schtasks /CREATE /F /SC MINUTE /MO %s /RU %s /NP /TN "%s" /TR "\%s\" /ST 09:00:00' % (jobTimeMO,userU,jobNameTN,files[j])).wait()!=0:
                    subprocess.Popen('schtasks /DELETE /TN "%s"' % jobNameTN).wait()
                    subprocess.Popen('schtasks /CREATE /SC MINUTE /MO %s /RU %s /NP /TN "%s" /TR "\%s\" /ST 09:00:00' % (jobTimeMO,userU,jobNameTN,files[j])).wait()
                    logger.log('\nINFO: se ha eliminado el conflicto y creado la tarea con exito')
                else:
                    logger.log('\nINFO: se ha forzado la creacion de la tarea con exito')
            else:
                logger.log('\nWARNING: la tarea para el script "%s" fue omitido por el usuario' % files[j])
    else:
        #logger.log
        print('\nWARNING: Sistema desconocido, no se han creado las tareas programadas.')
        break

return

我认为,问题可能在于输入流的缓冲区,或类似idk的问题, 问题是..为什么raw_input()不等待输入?

这是输出:

    Escriba un Identificador para la tarea de c:\script v3\tlog_ingreso_acciones_bcs.py:in acc
> in acc <

Tiempo de recurrencia de la tarea in acc:10
> 10 <
Error: la tarea programada especificada ya existe en el sistema.

ERROR: no se ha logrado generar la tarea, desea forzarla ? codigo error:1

puede que la tarea en conflicto sea eliminada (s/n): s

INFO: forzando al creacion de la tarea...
ADVERTENCIA: ¨confirma que desea quitar la tarea "in acc" (S/N )? s

Correcto: se elimin¢ correctamente la tarea programada "in acc".

Correcto: se cre¢ correctamente la tarea programada "in acc".


INFO: se ha eliminado el conflicto y creado la tarea con exito
> in acc <

Escriba un Identificador para la tarea de c:\script v3\tlog_parser_bcs_accion.py:>"here don't wait for input"<

Tiempo de recurrencia de la tarea :

0 个答案:

没有答案