python - 如何在命令行中确定一个文件是一个字符串以及它是否存在
问题描述
我想从命令行获取文件并打开它。如果文件名不是字符串,它将打印('错误类型'),如果文件无法访问或不存在,则会给出内容“找不到文件名”的错误。我想知道我该怎么做。下面这段代码对吗?
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上发布此内容,但仍然可以简化它:
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
推荐阅读
- python - 将 csv 拆分为带有标题的部分并附加 csv 文件
- api - Google Map API 能否在驾驶时不断在地图上显示行驶路径
- python - 确定列表的索引(zip)
- amazon-cognito - AWS Cognito 用于多个/n 个域
- spring - 如何在 Spring 的服务调用中获取 Mono QS 参数值
- python - 熊猫标记行适合条件
- visual-c++ - MFC编辑框修改连
- javascript - TypeError:无法读取 reactJS 上未定义的属性“地图”
- batch-file - 在批处理文件中等待 5 到 30 秒的随机时间
- javascript - 在前端显示 Freshchat Smart Plugs 脚本结果