使用python脚本实现基于指定字符串的文本排序
朋友用ansible导出了一个文件,文件中包含上千台机器的磁盘信息,他想要知道哪些机器最需要赶紧扩磁盘。思路是,按剩余磁盘空间百分数,从小到大对文本内容重新排序。下面是具体实现。
源文件ip.txt的格式是这样的:
10.1.2.1 | success | rc= >>
/dev/sda1 .1T 28G 982G % /export 10.1.2.1 | success | rc= >>
/dev/sda2 .6T 15G .5T % /export
下面是.py文件。运行这个python脚本后,可以生成ip_sorted.txt文件,是经过重排的文件,磁盘剩余空间越小,其机器信息会排在越前面。
#!/bin/bash
# -*- coding:utf-8 -*- import os
import collections with open('ip.txt','r') as f:
file_dic_ip = {}
file_dic_info = {}
i = 0
for line in f:
count = int(os.popen("grep -c '^/dev' ip.txt").read())
while i < count:
lines_ip = os.popen("grep -v '^/dev' ip.txt | grep -v '^$' ").read().split('\n')
lines_info = os.popen("grep -n '^/dev' ip.txt | awk -F ':' '{print $2}'").read().split('\n')
file_dic_ip[lines_info[i]] = lines_ip[i]
lines_info_percent = os.popen("grep -n '^/dev' ip.txt | awk -F ' ' '{print $5}'").read().split('%\n')
file_dic_info[lines_info_percent[i]] = lines_info[i]
i += 1 od = collections.OrderedDict(sorted(file_dic_info.items()))
with open('ip_sorted.txt','w') as f:
for items in od.items():
f.write(file_dic_ip[items[1]] + '\n' + items[1] + '\n\n')
流程图不太对,将就看看文字讲解吧

使用python脚本实现基于指定字符串的文本排序的更多相关文章
- PYTHON之批量文件指定字符串替换
在工作应用中,运维自动化的基础是标准化. 而标准化的工作,是难点,在公司相关部门的配合. 那么,在有标准化之后,相应的部署脚本,就比较好写了. 贡献一个在类似环境下可以运用的东东.. 当然,可以写得更 ...
- python 脚本(获取指定文件夹、指定文件格式、的代码行数、注释行数)
1.代码的运行结果: 获取 指定文件夹下.指定文件格式 文件的: 总代码行数.总注释行数(需指定注释格式).总空行数: #coding: utf-8 import os, re # 代码所在目录 FI ...
- ubuntu下把python脚本转为二进制字节码文件
ubuntu下把python脚本转为二进制字节码文件 听语音 原创 | 浏览:354 | 更新:2017-12-22 14:48 1 2 3 4 5 6 7 分步阅读 自己拥有个几个python脚本文 ...
- 【转】关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型
原文网址:http://www.crifan.com/python_head_meaning_for_usr_bin_python_coding_utf-8/ #!/usr/bin/python 是用 ...
- 【转载】关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型
1.#!/usr/bin/python 是用来说明脚本语言是 python 的 是要用 /usr/bin下面的程序(工具)python,这个解释器,来解释 python 脚本,来运行 python 脚 ...
- 基于binlog来分析mysql的行记录修改情况(python脚本分析)
最近写完mysql flashback,突然发现还有有这种使用场景:有些情况下,可能会统计在某个时间段内,MySQL修改了多少数据量?发生了多少事务?主要是哪些表格发生变动?变动的数量是怎 ...
- 涛哥的Python工具箱之批量删除含指定字符串行
我们在软件研发中不可避免的要用到大量的反复性的繁琐的工作,比如批量改动代码中接口的字符串.批量下载文件并又一次按规则命名.这些工作人工做特别累,尤其是对我这样的懒人来说. 对于一个出色的程序猿来说,反 ...
- 基于python脚本的对拍debug
首先,这是python脚本 import os; for i in range(0,20): print ("Case:"+str(i)); print ("random ...
- 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本
摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...
随机推荐
- DBA_Oracle Erp版本升级12.1.1到R12.1.3(案例)
20150506 Created By BaoXinjian
- HDU - 5685 Problem A(逆元)
这题我第一次想的就是直接模拟,因为我是这样感觉的,输入n是3次方,长度是5次方,加起来才8次方,里面的操作又不复杂,感觉应该能过,然而不如我所料,TLE了,玛德,这是第一次的代码. #include ...
- laravel项目报错DecryptException:The MAC is invalid.
1.问题描述 把Laravel项目上传至服务器,本地数据库导出再导入至服务器数据库,一切运行正常,但是当进行用户登录时报错 DecryptException in compiled.php line ...
- Python基础08 面向对象的基本概念
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 谢谢逆水寒龙,topmad和Liqing纠错 Python使用类(class)和对 ...
- spring配置定时器的时间设置
时间大小由小到大排列,从秒开始,顺序为 秒,分,时,天,月,年 *为任意 ?为无限制. 具体如下: "0/10 * * * * ?" 每10秒触发 "0 0 12 ...
- 查看mysql数据库引擎
1.查看支持的引擎 show engines; 2.查看当前引擎 show variables like '%storage_engine%'
- java从控制台读取数据的方式
1. Scanner sc = new Scanner(System.in); String s = sc.readLine(); 2. BufferReader br = new BufferRea ...
- [ActionScript 3.0] AS3.0 本机鼠标指针
Flash Player 10.2添加了内置的本机鼠标指针(native mouse cursor)支持,虽然在之前的版本里我们可以侦听MouseEvent事件来模拟鼠标指针,但是在有了原生的本机鼠标 ...
- 判断DataTable是否为空
DataTable: ) { //为空的操作 } DataRow: if(!DataRow.IsNull("列名")) { //不为空的操作 }
- 理论沉淀:隐马尔可夫模型(Hidden Markov Model, HMM)
理论沉淀:隐马尔可夫模型(Hidden Markov Model, HMM) 参考链接:http://www.zhihu.com/question/20962240 参考链接:http://blog. ...