首页 > 解决方案 > 如何在命令行中确定一个文件是一个字符串以及它是否存在

问题描述

我想从命令行获取文件并打开它。如果文件名不是字符串,它将打印('错误类型'),如果文件无法访问或不存在,则会给出内容“找不到文件名”的错误。我想知道我该怎么做。下面这段代码对吗?

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')

标签: pythonpython-3.xshell

解决方案


同意在Code Review上发布此内容,但仍然可以简化它:

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为 a if,更高效的是 is 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

if not os.path.exists(filename):
    raise FileNotFoundError

推荐阅读