文章目录(Table of Contents)
前言
这一篇文章会介绍一个python的库,fire-自动生成命令行工具(CIL);
Fire 的小应用
这里讲一个使用fire的小应用,主要为了记录一下使用方法;具体的使用方法可以看下面的参考资料;
目标
我们想要实现将如下文件进行转换:
即转换成一个id对应一个value,把上面的叉开,然后单独保存成一个文档。
代码及效果
下面我们看一下实现的过程和最后的效果;代码就简单写了一下,主要是看fire这个模块是如何使用的。
- #coding=utf-8
- import fire
- def file_process(input_file_name,output_file_name='result.txt'):
- filew = open(output_file_name,'w') #打开文件
- filew.writelines('id,value\n')
- with open(input_file_name) as file:
- for line in file:
- line = line.split(' ')#首先按照空格进行分割
- if len(line)==1:
- continue
- for lineRight in line[1].split(','):
- if lineRight.endswith('\n'):
- content = line[0]+','+lineRight
- else:
- content = line[0]+','+lineRight+'\n'
- #print(content)
- filew.writelines(content)
- filew.close()
- print('成功处理文件'+input_file_name+',输出文件为:'+output_file_name)
- def main():
- fire.Fire(file_process)
- if __name__=='__main__':
- main()
Fire 处理的效果
最终的效果图如上面所示;
Fire 的一些问题
Fire 处理 list 和 string
现在有下面一个函数「print_list」,他的作用就是打印一个 list。这个 list 是一个 string 类型的。
- import fire
- def print_list(my_list_arg=["one", "two"]):
- print(my_list_arg)
- if __name__ == "__main__":
- fire.Fire(print_list)
如果我们直接使用 python .\test.py ["1", "2"]
的方式运行,会出现如下的报错:
我们有三种方式可以解决上面的问题:
- No space:
[one,two]
- Escape the space:
[one,\ two]
- Quotes:
"[one, two]"
.
例如我们使用第三种做一下实验,结果如下所示:
参考资料,How to pass a list/array as argument to python fire?
Fire 处理 dict
同样的,如果使用 Fire 来处理字典类型(dict)的数据,也需要使用和上面一样的方法。可以看一下下面的例子:
- import fire
- def print_dict(my_dict_arg={'a':1, 'b':2}):
- print(my_dict_arg)
- if __name__ == "__main__":
- fire.Fire(print_dict)
在使用的时候,需要对 dict 使用双引号括出来:
参考资料
这里放一些可以查阅的文档,方便查找和学习;
- 微信公众号
- 关注微信公众号
- QQ群
- 我们的QQ群号
评论