python的N个小功能(更新文件)
##########################################################################
#对于第二份文件:第一份与第二份不相同,以第二份为主;
#第一份存在,第二份不存在,修改为0;第一份不存在,第二份存在,以第二份为主
##########################################################################
# -*- coding: utf-8 -*-
"""
Created on Wed Feb 22 13:40:03 2017
@author: Administrator
"""
import sys
def readFile(filename): ##读文件
re = {}
for line in open(filename):
arr = line.strip().split('\t') # s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符;
#1. 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ')
#2.这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉
if len(arr)<=2:
continue
key = arr[0] + '_' + arr[1]
re.setdefault(key, arr[2]) #dict.setdefault(key, default=None),
#key——查找的键值;default——键不存在时,设置的默认键值
return re
def Minus(baseFile, otherFile): #对于第二份文件:第一份与第二份不相同,以第二份为主;
#第一份存在,第二份不存在,修改为0;第一份不存在,第二份存在,以第二份为主
re = {}
baseDict = readFile(baseFile)
otherDict = readFile(otherFile)
for k,v in baseDict.items():
if k in otherDict:
if not baseDict[k].isdigit() or not otherDict[k].isdigit():
continue
c = int(baseDict[k]) - int(otherDict[k])
if c != 0:
re[k] = otherDict[k]
continue
if k not in otherDict:
if not baseDict[k].isdigit() :
continue
c = 0
re[k] = str(c)
continue
for k,v in otherDict.items():
if k not in baseDict:
if not otherDict[k].isdigit():
continue
re[k] = otherDict[k]
return re
def writeFile(baseDict):
for k,v in baseDict.items(): #dict = { 1 : 2, 'a' : 'b', 'hello' : 'world' }
#dict.items() [('a', 'b'), (1, 2), ('hello', 'world')]
arr = k.split('_')
print "%s\t%s\t%s" % (arr[0], arr[1], v)
def main():
#baseFile = sys.argv[1]
#otherFile = sys.argv[2]
baseFile = r'G:\pythoncode\one.txt'
otherFile = r'G:\pythoncode\two.txt'
baseDict = Minus(baseFile, otherFile)
writeFile(baseDict)
if __name__=='__main__':
main()
#####################################################
######################案例###########################
one.txt
1 2 3
4 5 6
7 8 9
10 11 12
two.txt
1 2 3
7 8 9
10 11 8
13 14 15
输出
13 14 15
10 11 8
4 5 0
python的N个小功能(更新文件)的更多相关文章
- python的N个小功能(找到符合要求的图片,重命名,改格式,缩放,进行随机分配)
########################################################################## 循环读取该目录下所有子目录和子文件 ####### ...
- python的N个小功能(文件内容的匹配替换)
# -*- coding: utf-8 -*- """ Created on Fri Feb 17 20:25:05 2017 @author: who "&q ...
- 【Python】猜数小游戏(文件操作)
人生苦短,我用Python 关键词 1.多用户 2.字典记录所有成绩 3.每次游戏轮数&总游戏次数&平均每次游戏需要多少轮 字典Dictionary.列表List.元组Tuple差异化 ...
- python的N个小功能(找到要爬取的验证码链接,并大量下载验证码样本)
# -*- coding: utf-8 -*- """ Created on Mon Mar 21 11:04:54 2017 @author: sl "&qu ...
- python的N个小功能(连接数据库并下载相应位置的图片)
#################################################################################################### ...
- python的N个小功能之正则匹配
1.. 匹配任意除换行符“\n”外的字符:2.*表示匹配前一个字符0次或无限次:3.+或*后跟?表示非贪婪匹配,即尽可能少的匹配,如*?重复任意次,但尽可能少重复,惰性匹配:4. .*? 表示匹配任意 ...
- python的N个小功能(图片预处理:打开图片,滤波器,增强,灰度图转换,去噪,二值化,切割,保存)
############################################################################################# ###### ...
- python的N个小功能(高斯模糊原理及实践)
原理: 二维高斯函数 1) 为了计算权重矩阵,需要设定σ的值.假定σ=1.5,则模糊半径为1的权重矩阵如下: 2) 这9个点的权重总和等于0.4787147,如果只计算 ...
- python的N个小功能(文本字段对应数值,经纬度计算距离,两个时间点计算时间间隔)
案例1 >>> import pandas as pd >>> df=pd.DataFrame({'A':[1,2,3],'B':[1,2,3],'C':[1,2, ...
随机推荐
- 20155306 2006-2007-2 《Java程序设计》第2周学习总结
20155306 2006-2007-2 <Java程序设计>第2周学习总结 教材学习内容总结 第三章 基础语法: java中,基本类型:布尔(boolean):boolean类型分为tr ...
- 20155334 实验三 敏捷开发与XP实践
实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 完成实验.撰写实验报告,实验报告以 ...
- hasOwnProperty()函数
hasOwnProperty()函数的返回值为Boolean类型.如果对象object具有名称为propertyName的属性,则返回true,否则返回false 例子: function Site( ...
- Zabbix学习之路(七)之Nginx的状态监控
1.安装nginx [root@linux-node2 ~]# yum install -y nginx [root@linux-node2 ~]# mkdir /etc/zabbix/zabbix_ ...
- hadoop 、hive 的一些使用经验。
1.queue的设置 hadoop2.0支持了queue,在hadoop程序里面进行queue的配置: job.getConfiguration().set("mapred.job.queu ...
- 一个非常好用的PHP数组函数
array_column 该函数非常有用,在PHP 5.5中可直接调用. 有如下二维数组,如要抽取每个子数组中的特定项. <?php // Array representing a possib ...
- 【linux报错】-bash: xhost: command not found
参考自:http://blog.csdn.net/csdnones/article/details/51513163,感谢原作者解决了我的问题. 执行xhost +,报以下错误,原因是因未没有安装相关 ...
- Visual Studio 设置C#语言代码格式
设置代码大括号不另起一行: 工具 -> 选项 -> 文本编辑器 -> C# -> 代码样式 -> 格式设置
- 人脸检测及识别python实现系列(3)——为模型训练准备人脸数据
人脸检测及识别python实现系列(3)——为模型训练准备人脸数据 机器学习最本质的地方就是基于海量数据统计的学习,说白了,机器学习其实就是在模拟人类儿童的学习行为.举一个简单的例子,成年人并没有主动 ...
- Python字符串/元祖/列表/字典互转
#-*- coding:UTF-8 -*- #author:RXS002 #1.字典 dict = {'name':'Zara','age':7,'class':'First'} #字典转换为字符串, ...