OSError [Errno 22] 的异常处理问题
Exception Handling Problem with OSError [Errno 22]
3.7 documentation 声明我们应该这样处理 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()
输入包含有效字符的文件名就可以了。我需要程序不会崩溃,并提交此异常。关于我所缺少的任何建议?
谢谢
处理打开和读取文件的代码应该在 try/except 语句的 try 块中,如下所示:
try:
# ... preceding code...
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()
except:
3.7 documentation 声明我们应该这样处理 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()
输入包含有效字符的文件名就可以了。我需要程序不会崩溃,并提交此异常。关于我所缺少的任何建议?
谢谢
处理打开和读取文件的代码应该在 try/except 语句的 try 块中,如下所示:
try:
# ... preceding code...
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()
except: