Python Fire介绍

王 茂南 2018年4月19日09:55:34
评论
1 1686字阅读5分37秒
摘要这一篇文章会介绍一下python下的fire库,结合一个例子给出其的用法;这个库还是很好用的,希望可以学习一下,能提高很多效率。

前言

这一篇文章会介绍一个python的库,fire-自动生成命令行工具(CIL);

Fire 的小应用

这里讲一个使用fire的小应用,主要为了记录一下使用方法;具体的使用方法可以看下面的参考资料;

目标

我们想要实现将如下文件进行转换:

Python Fire介绍

即转换成一个id对应一个value,把上面的叉开,然后单独保存成一个文档。

代码及效果

下面我们看一下实现的过程和最后的效果;代码就简单写了一下,主要是看fire这个模块是如何使用的。

  1. #coding=utf-8 
  2. import fire
  3. def file_process(input_file_name,output_file_name='result.txt'):
  4.     filew = open(output_file_name,'w') #打开文件
  5.     filew.writelines('id,value\n')
  6.     with open(input_file_name) as file:
  7.         for line in file:
  8.             line = line.split(' ')#首先按照空格进行分割
  9.             if len(line)==1:
  10.                 continue
  11.             for lineRight in line[1].split(','):
  12.                 if lineRight.endswith('\n'):
  13.                     content = line[0]+','+lineRight
  14.                 else:
  15.                     content = line[0]+','+lineRight+'\n'
  16.                 #print(content)
  17.                 filew.writelines(content)
  18.     filew.close()
  19.     print('成功处理文件'+input_file_name+',输出文件为:'+output_file_name)
  20. def main():
  21.     fire.Fire(file_process)
  22. if __name__=='__main__':
  23.     main()

Fire 处理的效果

Python Fire介绍

最终的效果图如上面所示;

 

Fire 的一些问题

Fire 处理 list 和 string

现在有下面一个函数「print_list」,他的作用就是打印一个 list。这个 list 是一个 string 类型的。

  1. import fire
  2. def print_list(my_list_arg=["one", "two"]):
  3.     print(my_list_arg)
  4. if __name__ == "__main__":
  5.     fire.Fire(print_list)

如果我们直接使用 python .\test.py ["1", "2"] 的方式运行,会出现如下的报错:

Python Fire介绍

我们有三种方式可以解决上面的问题:

  1. No space: [one,two]
  2. Escape the space: [one,\ two]
  3. Quotes: "[one, two]".

例如我们使用第三种做一下实验,结果如下所示:

Python Fire介绍

参考资料How to pass a list/array as argument to python fire?

 

Fire 处理 dict

同样的,如果使用 Fire 来处理字典类型(dict)的数据,也需要使用和上面一样的方法。可以看一下下面的例子:

  1. import fire
  2. def print_dict(my_dict_arg={'a':1, 'b':2}):
  3.     print(my_dict_arg)
  4. if __name__ == "__main__":
  5.     fire.Fire(print_dict)

在使用的时候,需要对 dict 使用双引号括出来:

Python Fire介绍

参考资料

这里放一些可以查阅的文档,方便查找和学习;

  1. The python fire guide
  2. 【Python】自动生成命令行工具 - fire 简介

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2018年4月19日09:55:34
  • 转载请务必保留本文链接:https://mathpretty.com/9229.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: