##########################################################################

#对于第二份文件:第一份与第二份不相同,以第二份为主;

#第一份存在,第二份不存在,修改为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

转载于:https://www.cnblogs.com/dudumiaomiao/p/6431166.html

python的N个小功能(更新文件)相关推荐

  1. python 换算美分的小功能

    python 写了个小功能, 取一个任意小于1美元的金额,然后计算可以换成最少多少枚硬币.硬币有1美分,5美分,10美分,25美分4种.举例来说,0.76美元换算结果应该是3枚25美分,一枚1美分.类 ...

  2. 【Python】猜数小游戏(文件操作)

    人生苦短,我用Python 关键词 1.多用户 2.字典记录所有成绩 3.每次游戏轮数&总游戏次数&平均每次游戏需要多少轮 字典Dictionary.列表List.元组Tuple差异化 ...

  3. 超好用Python小功能(持续更新中)

    文章目录 一.字符串操作小功能 1.把数字转为千位数值类型 2.检测字符串是不是纯数字 3.python列表的交.并.差集 4.对列表中字典中的字典排序 5.python 求角度大小 6.已知一个点, ...

  4. ftp客服端实现自动更新文件(带更新完自动启动功能)-python

    ftp客服端实现自动更新文件(带自动启动功能并封装为带配置文件的工具)-python 前言 一.项目环境和结构 二.使用介绍 三.程序封装和注册服务 四.填坑(希望读者能用到) 总结 前言 由于工位机 ...

  5. Unity3D小功能 小技巧 小教程 小原理(持续更新...)

    Unity3D小功能 小技巧 小教程 小原理(持续更新...) 1.Unity的.NET版本是2.0 按道理来说,C#能用的功能Unity也能用,但是Unity的.NET却不是最新版 要是用一些别的D ...

  6. 生成msk文件的用处_Yotta企业云盘“小”功能大用处企业办公好伙伴

    Yotta企业云盘"小"功能大用处企业办公好伙伴 对于传统的数据存储,Yotta企业云盘可以很好的超越传统存储所面临的挑战. 1.支持本地文件多个同时上传:在网盘中,在需要上传文件 ...

  7. python10分钟处理表格_使用python对excel表格处理的一些小功能

    python对excel表格处理的一些小功能 功能概览pandas库的一些应用文件读入计算表格中每一行的英文单词数简单用textblob进行自然语言情感分析判断一行中是不是有两列值都与其他行重复(可推 ...

  8. python小功能 模拟下载进度条打印

    python小功能 模拟下载进度条打印 #!/usr/bin/env python3 # -*- coding:utf-8 -*-import timedef progress(arg):if arg ...

  9. 文件不能断点 webstorm_详解python使用金山词霸的翻译功能(调试工具断点的使用)...

    这篇文章主要介绍了详解python使用金山词霸的翻译功能(调试工具断点的使用),本文给大家介绍得非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 今天试着用python获取金山 ...

最新文章

  1. jenssen不等式的证明
  2. java之七 高级类设计
  3. 802.1X和NAP整合实验手册
  4. php5.4.13.tar.bz2,编译安装PHP-5.4.13
  5. (day 43 - 二分查找 ) 剑指 Offer 53 - II. 0~n-1中缺失的数字
  6. Apache详解(五)WEB相关工具
  7. Python爬取招聘网站岗位信息
  8. error C2048 :int main()无法重载/已存在主体
  9. HC05蓝牙模块使用
  10. LeCun:赋予机器 “常识” ,重新设计神经网络将是AI 研究重点
  11. vue 项目获取QQ音乐歌单数据
  12. PointNet 翻译:
  13. 用signalr实现简单的网页实时聊天
  14. Ltspice测量波形的相关数据
  15. 微信交易单号和订单号的区别
  16. Retrofit+协程使用填坑和优化
  17. 资深HR告诉你,面试中你不知道的那些秘密!
  18. 使用存储过程实现循环更新3组数组中的数据
  19. 2021年6月PMP考点
  20. 基于Tor网络的HTTP代理搭建过程

热门文章

  1. servlet串行拦截器实现例子
  2. java基础—TreeSet集合中储存自定义对象(java集合二)
  3. Mr.J--俄罗斯方块实现(框架)
  4. Project Life Cycle
  5. cf Round 613
  6. li标签行内元素高度及居中
  7. WP8 中使用HTML Agility Pack与友盟分享SDK遇到的 System.Xml.XPath加载问题
  8. HDU 3018 Ant Trip(一笔画问题)
  9. VC++中使用内存映射文件处理大文件
  10. Python_套接字、IPv4和简单的客户端/服务器编程