ruttet sys.exit(), funkar inte (python)
Postat: 19 jul 2007, 10:02
Hejsan! Nu har jag stött på något riktigt skumt. Jag brukar använda mig av funktionen sys.exit() för att avsluta programkörningen. Det funkar i allmänhet men helt plötsligt så fungerar inte funktionen MEN bara på ETT ställe i programmet :S På alla andra ställen i programmet, och i alla andra program, så fungerar det som vanligt.
Det är så att jag kollar om stdin är tom och om den är det så avslutas körningen. Funktionen sys.stdin.isatty() som jag använder mig av verkar fungera bra. Såhär ser funktionen ut:
simpelt.. När jag kör programmet utan ngt i stdin så stannar programmet upp och bara står och tuggar.. Inget händer men trycker jag Ctrl+D så ser man medelandet och sen avslutas det :S. Det är riktigt konstigt. Jag bifogar hela mitt program, eller rättare sagt bara den filen där problemet uppstår (main-filen).
EDIT: Programmet avslutas heller inte när man "kontaktar" help! alltså: python script.py -h. Jag är tvungen att trycka Ctrl+D då med :S
Det är så att jag kollar om stdin är tom och om den är det så avslutas körningen. Funktionen sys.stdin.isatty() som jag använder mig av verkar fungera bra. Såhär ser funktionen ut:
Kod: Markera allt
def checkstdin():
'''Check if stdin is empty.'''
if sys.stdin.isatty():
print 'The stdin is empty. Either the file does not exist or the file is empty.'
sys.exit()
Kod: Markera allt
import optparse
import os
import sys
import cells
import conf
def checkstdin():
'''Check if stdin is empty.'''
if sys.stdin.isatty():
print 'The stdin is empty. Either the file does not exist or the file is empty.'
sys.exit()
def validExtension(imagename):
'''Check whether "imagename" has a valid extension'''
valid = '.jpg'
if imagename.find(valid) != -1:
return imagename
else:
print 'The extension is not valid.'
sys.exit()
def viewdata(option, opt, value, parser):
checkstdin()
print inputdata
def size(option, opt, value, parser):
size = parser.rargs[0].split(',')
conf.height = int(size[0])
conf.width = int(size[1])
def main(inputdata):
parser = optparse.OptionParser()
parser.add_option('-o', '--output', dest='imagename',
help='defines the output-file (the cellmap/image).')
parser.add_option('-v', '--view', action='callback', callback=viewdata,
help='view the stdin.')
parser.add_option('-s', '--size', action='callback', callback=size, dest='size',
help='set the size (height,width).')
(options, args) = parser.parse_args()
if (options.imagename != None):
checkstdin()
imagename = validExtension(options.imagename)
cells.createImg(inputdata, imagename)
else:
print 'This program requires a option.'
if __name__ == '__main__':
inputdata = sys.stdin.read()
main(inputdata)
EDIT: Programmet avslutas heller inte när man "kontaktar" help! alltså: python script.py -h. Jag är tvungen att trycka Ctrl+D då med :S