背景
复制一个目录时,提示有个文件名太长未能复制成功,然后忘记是哪个了,现在要靠脚本把它找出来。
代码
#!/usr/bin/pythonimport getoptimport osimport sysdef parse_args(argv):num = 0path = '.'try:'''Syntax: getopt.getopt(args, options, [long_options])Parameters:args: List of arguments to be passed.options: String of option letters that the script wants to recognize. Options that require an argument should be followed by a colon (:).long_options: List of the string with the name of long options. Options that require arguments should be followed by an equal sign (=). '''# h i o 为可选项,其中 i 和 o 后面需要跟参数opts, args = getopt.getopt(argv, "hn:p:")except getopt.GetoptError:print('使用方法: finder.py -n <文件名长度最小值> -p <路径,默认为当前目录>')sys.exit(2)for opt, arg in opts:if opt == '-h':print('使用方法: finder.py -n <文件名长度最小值> -p <路径,默认为当前目录>')sys.exit()elif opt == "-n":if not arg.isdigit():print('使用方法: finder.py -n <文件名长度最小值> -p <路径,默认为当前目录>')sys.exit()num = int(arg)elif opt == "-p":path = argreturn path, numdef extract_files(path='.', num=0):for p, dir_list, file_list in os.walk(path):for file in file_list:if len(file) >= num:print("长度: {}, 文件名: {}".format(len(file), os.path.join(p, file)))if __name__ == "__main__":path, num = parse_args(sys.argv[1:])extract_files(path, num)
使用方法
执行:
python finder.py -n <文件名长度最小值> -p <路径,默认为当前目录>'
运行样例:
python .\main.py -n 3 -p D:\test长度: 5, 文件名: D:\test\1.txt长度: 10, 文件名: D:\test\新建文件夹\新建文本文档.txt长度: 10, 文件名: D:\test\新建文件夹 - 副本\新建文本文档.txt长度: 10, 文件名: D:\test\新建文件夹 - 副本 (2)\新建文本文档.txt
如果觉得《python带命令行参数解析的文件遍历脚本(找出文件名长度大于某值的文件)》对你有帮助,请点赞、收藏,并留下你的观点哦!