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, ...
随机推荐
- 20155336 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
20155336 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Jav ...
- SaltStack入门篇(七)之架构部署实战
模块:https://docs.saltstack.com/en/2016.11/ref/states/all/index.html 实战架构图: 实验环境设置: 主机名 IP地址 角色 linux- ...
- 17、JAVA多线程和并发基础面试问答
JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-ans ...
- DOM练手讲解
先上代码,大家贴入看一下 <body> <select id="slc" size="7"></select> <in ...
- Jquery操作下拉列表和复选框,自定义下拉
后半部分还有自定义下拉列表和开灯关灯的效果,可以进来来看一下 哦 如果网页有下拉列表和复选框,看一下Jquery怎么来操作他们,主要怎么来选取他们的数据,怎么设置某一项选中 先来看个下拉列表 < ...
- localhost/127.0.0.1/本机IP的区别以及端口号
端口号: http请求默认的端口是:80 PHPstudy中的端口号: Apache服务器的端口是:80 MySQL数据库的端口是:3306 PHP项目端口是:9000 禅道中的端口号: Apache ...
- Android手机测试-ddms&monitor-抓crash,log
1.安装adb offline解决办法: 原因就是android 4.2以上的版本过高,sdk的adb驱动不匹配,需要升级.我原本的adb是1.0.29,升级为1.0.31,问题就解决了. 2.安装s ...
- Web自动化常用方法封装(不定时更新)
/** * JScript实现鼠标悬停 */public void mouseHoverJScript(By by,WebElement HoverElement) { // TODO Auto-ge ...
- C#入门经典第十章例题 - - 卡牌
1.库 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...
- rhel6 mysql skip-grant-tables 添加用户报错 ERROR 1290
不小心把数据库密码忘掉了, 这个时候我们只需要在数据库的配置文件里面添加 skip-grant-tables 然后重新启动服务,再登录数据库就不要我们输入密码了 这个时候我成功登录数据,可是不小心又把 ...