Документация 3.7 гласит, что мы должны обрабатывать исключения OSError как таковые:
except OSError as err:
print("OS error: {0}".format(err))
Я по-прежнему получаю сообщение об ошибке при выходе из программы, когда делаю именно это. Ошибка:
File "F:/working/workfile.py", line 55, in main
OutFile = open(FileName, 'w')
OSError: [Errno 22] Invalid argument: 'bad<>file.txt'
Полная соответствующая область кода:
def main():
InvalidInput = True
while InvalidInput:
#Start Exception handling
try:
# Ask user for how many random numbers to create
NumberCount = int(input('How many numbers do you want to generate?'))
# Ask the user where the created numbers are to be stored
# Error out if invalid characters are used
FileName = input('Where do you want the files to be written to?')
# Catch the error if invalid characters are used
except OSError as err:
print("OS error: {0}".format(err))
print ('Please enter a valid path/filename.')
InvalidInput = True
except IOError:
print ('Please enter a valid path/filename.')
InvalidInput = True
except ValueError:
print ('Invalid number. Please enter only integers')
InvalidInput = True
else:
InvalidInput = False
OutFile = open(FileName, 'w')
for Number in range (NumberCount):
# Call the function(s) for generating random numbers
# and writing to the output file
ReturnNumber = RandomNumbers.RandomWriter ()
OutFile.write (str(ReturnNumber))
OutFile.write ("\n")
print ('Writing ', ReturnNumber)
# Close the file when finished
OutFile.close()
print ('Closing the open file.')
main()
Ввод имени файла с допустимыми символами работает просто отлично. Мне нужна программа, чтобы не взломать sh и передать это исключение. Любой совет, что мне не хватает?
Спасибо