Я хочу получить файл из командной строки и открыть его. Если имя файла не является строкой, оно будет печатать ("Неверный тип"), и если файл не может быть доступен или не существует, он выдаст сообщение об ошибке "Невозможно найти имя файла". Интересно, как я могу это сделать. Правильно ли этот код?
import sys
filename=sys.argv[1]
if type(filename) is str:
pass
else:
raise Exception('wrong type')
try:
open(filename,'r')
except FileNotFoundError:
raise FileNotFoundError('Cannot find filename')
Согласитесь с публикацией этого на Code Review tho, но все же можете упростить его:
import sys
filename=sys.argv[1]
if not isinstance(filename,str):
raise Exception('wrong type')
try:
open(filename,'r')
except FileNotFoundError:
raise FileNotFoundError('Cannot find filename')
Упрощение if
/else
в if
, и более эффективное isinstance
, а не type(..) ==..
sys.argv[1]
всегда является строкой, поэтому нет необходимости в выражении if
:
import sys
filename=sys.argv[1]
try:
open(filename,'r')
except FileNotFoundError:
raise FileNotFoundError('Cannot find filename')
os.path.exists
, os.path.exists
:
if not os.path.exists(filename):
raise FileNotFoundError
sys.argv
не может содержать что-либо, что не является строкой.