python关于sys.argv列表的应用场景
1、需求很简单:
使用 sys.argv 获取命令行参数(即要判断的文件名),然后判断文件是否存在,文件存在再进一步判断是否有读权限
2、分析:
(1)filename:存储命令行参数,通过 sys.argv[1] 获取文件的名称,但存在一个异常需要考虑到:如果用户直接运行我们的程序,没有传递任何命令行参数,那么访问 sys.argv[1] 将会出现索引越界的错误
解决:在访问sys.argv 之前添加一个空字符串(sys.argv.append(""))
(2)判断文件是否存在或文件是否有读权限都用到os模块
判断文件是否存在: 使用 os.path.isfile 函数
判断文件是否有读的权限:使用 os.access 函数。 access() 格式如下:
os.access(path, mode);
-
path -- 要用来检测是否有访问权限的路径。
-
mode -- mode为F_OK,测试存在的路径,或者它可以是包含R_OK, W_OK和X_OK或者R_OK, W_OK和X_OK其中之一或者更多。
- os.F_OK: 测试path是否存在。
- os.R_OK: 测试path是否可读。
- os.W_OK:测试path是否可写。
- os.X_OK: 测试path是否可执行。
3、具体代码:
1 #!/usr/bin/python 2 3 import os 4 import sys 5 6 def main(): 7 sys.argv.append("") 8 filename = sys.argv[1] 9 if not os.path.isfile(filename): 10 raise SystemExit(filename + ' does not exists') 11 elif not os.access(filename, os.R_OK): 12 raise SystemExit(filename + ' is not accessible') 13 else: 14 print (filename + ' is accessible') 15 16 if __name__ == '__main__': 17 main()
4、结果展示
用的是普通用户