python处理大数据文件,set、enumerate使用,python传参,获取文件路径

 
###   enumerate(ad_set,start=1)
###   start=1:指定索引起始值
#-*- coding:utf-8 -*-
#唯一号码转家庭、非家庭
#编写者:zqm
#日期:20170810
#功能:分别找出家庭,非家庭用户,家庭的编号转jz编号,非家庭重新编号且相同编号相同
######################################################################
# 备注:
#       File_target_zhengq_temp(临时文件)是处理的文件中的政企数据
#
# 调用方式:python Jzad_jiat_zhengq.py /zqm/处理的文件.txt
#
# 注意:
#      此程序只适用于ad在File_deal文件的第一列,如果不在第一列,请酌情修改程序
####################################################################### 

from datetime import datetime
from sys import argv
import os

#配置文件
File_source = "/JZ_lzy.txt"

#处理文件所在的目录
dir = os.getcwd()+"/"

#要处理的文件
File_deal = argv[1]

if File_deal.find("/") != -1:
        File_deal = argv[1].split("/")[-1]

#临时文件即处理文件里的政企数据
File_target_zhengq_temp = dir+"政企原始数据.txt"

#政企结果文件
File_target_zhengq = dir+"zq_"+File_deal

#家庭结果文件
File_target_jiating = dir+"jt_"+File_deal

print ("程序已开始执行!!!")
print (datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

dist_source = {}
list = []
ad_set = set()
dist2 = {}

def Read_File_source():
        with open(File_source, "r") as ff:
                for line in ff:
                        line = line.strip().split("\t")
                        dist_source[line[0]] = line[1]

def Main_zhengqi():
        with open(File_target_zhengq_temp, "w") as f_write:
                with open(File_deal, "r") as ff:
                        for line in ff:
                                line = line.strip().split("\t")
                                if line[0] not in dist_source:
                                        f_write.write("\t".join(line) + "\n")
                                        ad_set.add(line[0])

        with open(File_target_zhengq_temp,"r") as ff:
                for line in ff:
                        list.append(line)

        with open(File_target_zhengq, "w") as f_write:
                for num,ad in enumerate(ad_set,start=1):
                        dist2[ad] = num
                for line in list:
                        line = line.strip().split("\t")
                        if line[0] in dist2:
                                f_write.write(str(dist2[line[0]])+"\t"+"\t".join(line[1:])+"\n")
        print("政企已完成!!!")
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

def Main_jiating():
        with open(File_target_jiating, "w") as f_write:
                with open(File_deal, "r") as ff:
                        for line in ff:
                                line = line.strip().split("\t")
                                if line[0] not in dist_source:
                                        continue
                                line[0] = dist_source[line[0]]
                                f_write.write("\t".join(line) + "\n")
        print("家庭已完成!!!")
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

if __name__ == "__main__":
        Read_File_source()
        Main_jiating()
        Main_zhengqi()
        print("程序已完成!!!")
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))


版权声明:原创文章,未经允许不得转载,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值