Как определить файл в командной строке является строкой и существует ли он или нет

1

Я хочу получить файл из командной строки и открыть его. Если имя файла не является строкой, оно будет печатать ("Неверный тип"), и если файл не может быть доступен или не существует, он выдаст сообщение об ошибке "Невозможно найти имя файла". Интересно, как я могу это сделать. Правильно ли этот код?

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')
  • 3
    Какая конкретная проблема у вас с этим?
  • 1
    Это действительно относится к Code Review .
Показать ещё 4 комментария
Теги:
python-3.x

1 ответ

0
Лучший ответ

Согласитесь с публикацией этого на 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
  • 1
    Хорошо, я понял, что вы имеете в виду. Большое спасибо.
  • 1
    Это бессмысленно, sys.argv не может содержать что-либо, что не является строкой.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню