我在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 :