广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python cvs文件处理脚本 pyt
  • 389
分享到

python cvs文件处理脚本 pyt

脚本文件python 2023-01-31 07:01:31 389人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

    最近有一个需求,需要讲csv文件通过Http接口post方法导入到数据库,于是写了一个脚本,主要字符编码这一块踩了不少坑,最后终于完成了,可适用windows 和linux 。    具体功能,cvs列没有顺序要求。直接贴下脚本!#

    最近有一个需求,需要讲csv文件通过Http接口post方法导入到数据库,于是写了一个脚本,主要字符编码这一块踩了不少坑,最后终于完成了,可适用windowslinux

    具体功能,cvs列没有顺序要求。直接贴下脚本!


#!/usr/bin/env python
#coding=utf-8 

from itertools import izip
import urllib,urllib2,urllib2,JSON,csv,sys,time,chardet

csv_file=sys.argv[1]

#定义需要导入的列,无顺序
Check_Head=("name","phone","isSell","origin","type","city","brand","series","model","year","plate" ,"remark")

##values 为True的表示不可以为空,为False的可以为空
keys={"name":True,"phone":True,"isSell":True,"origin":True,"type":False,"city":False,"brand":False,"series":False,"model":False,"year":False,"plate":False ,"remark":False}


#post
def http_post(data,url):
	jdata = json.dumps(data)           
	req = urllib2.Request(url, jdata)  
	response = urllib2.urlopen(req)  
	return response.read()


#获取需要处理的csv文件的字符编码
def Codeing(file):
	try: 
		f = open( file, 'rb' )
		fencoding=chardet.detect(f.read())
		f.close()
		return fencoding["encoding"]
	except Exception,err:
		print Exception, ":","%s" % err
		sys.exit()
		
decode=Codeing(csv_file)
encode= sys.stdin.encoding
		
###导入询问
def Export_Inquiry():
	while True : 
		YS=raw_input("确认导入请输入Y,退出请输入N :".decode('utf-8').encode(encode)	).strip()
		if YS == "Y":
			break
		elif YS == "N":
			sys.exit()
	print u"已开始导入,导入过程中请勿退出!"

#导入环境配置	
def Export_Env():
	while True : 
		export_env=raw_input("请输入导入环境prod/uat ? :".decode('utf-8').encode(encode)).strip()
		if export_env == "prod":
			url='http://www.xxxxx.com/webapi/public/reGISter_carneed'
			print u"你要导入的是生产环境,请确认是否需要导入 ?"
			return  url
		elif export_env == "uat":
			print u"你要导入的是UAT环境,请确认是否需要导入 ?"
			url='http://uat.xxxx.com/WEBapi/public/register_carneed'
			return  url
			


		

def Check_Csv(csv_file,Head,coding):
	suffix=csv_file.split(".")[-1]
	if suffix != "csv":
		sys.exit("请输入csv文件")
	try:
		f = open( csv_file, 'rb' )
	except Exception,err:
		print Exception, ":","%s" % err
		sys.exit()
	reader = csv.reader( f )
	loop=0
	for row in reader:
		if reader.line_num == 1:
			if len(row) != len(Head):
				print u"请检查你的csv文件列数与要求不一致;"
				print u"你导入为%s 列:%s" % (len(row),row)
				print u"正确应该%s 列:%s" % (len(Head),list(Head))
				sys.exit()
			err_head=[]
			list_head=[]
			for li in row:
				li=li.strip().decode(coding)
				if li not in Head:
					err_head += [li]
				else:
					list_head += [li]
			if err_head:
				print u"列名有误:%s 请确认是否与以下匹配" % err_head
				#print "正确请参考如下列名:"
				print  list(Head)
				sys.exit()
			list_head=tuple(list_head)
			continue
		else:
			if len(row) == 0 :		##去除空行
				print u"第%s行为空,请处理" %  reader.line_num
				sys.exit()
			row = iter( row )	##放入迭代器
			out={}
			for key in list_head:
				out[key] = row.next().strip().decode(coding).encode("UTF-8") ##根据前面获取的字符编码解码
			data = out
			IsNull_Key={}
		for (k,v) in keys.items():	##检查不能为空的字段的值是否为空,如果为空,则记录下并告诉行号!
			if v is True:
				if data[k] == "":
					IsNull_Key[k]=data[k]
		if IsNull_Key:
			print u"第%s行有空值:%s" % (reader.line_num , IsNull_Key)  
			loop += 1
	result={"loop":loop,"list_head":list_head}
	return result
	f.close()

def Import_Csv(csv_file,list_head,url,coding):
	f = open( csv_file, 'rb' )
	reader = csv.reader( f )
	for row in reader:
		if reader.line_num == 1:
			continue
		else:    
			row = iter( row )
			out={}
			for key in list_head:
				out[key] = row.next().strip().decode(coding).encode("UTF-8")  ##根据前面获取的字符编码解码           
		data = out 
		for (k,v) in keys.items():
			if v is False:
				if data[k] == "":
					del data[k]
                 
		try:     
			if reader.line_num % 2 == 0:
				time.sleep(1)
			resp=http_post(data=data,url=url)
			result=json.loads(resp)
#			result["success"]=False
			if result["success"] is False:
				print u"请注意:第%s行导入失败! %s " % (reader.line_num,resp)
			else:
				print u"成功导入第%s行:%s" % (reader.line_num,resp)
		except Exception,err:
			print Exception, ":","%s" % err
			sys.exit()
                 
	f.close()
	print u"导入已完成,共导入%s行。"  % (reader.line_num - 1)



	
print "############################################"
print u"###正在校验csv文件格式,请稍等.........#####"
print "############################################"


result=Check_Csv(csv_file,Check_Head,decode)
loop=result["loop"]
list_head=result["list_head"]
if loop > 0:
	print u"请按以上提示处理后再进行导入!"
	sys.exit()   
else:            
	print u"文件格式校验已完成,请选择导入环境:"
	url=Export_Env()
	Export_Inquiry()
	Import_Csv(csv_file,list_head,url,decode)

print "############################################"
print u"################导入完成!##################"
print "############################################"

发这里也就当做笔记啦!

--结束END--

本文标题: python cvs文件处理脚本 pyt

本文链接: https://www.lsjlt.com/news/191446.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python cvs文件处理脚本 pyt
        最近有一个需求,需要讲csv文件通过http接口post方法导入到数据库,于是写了一个脚本,主要字符编码这一块踩了不少坑,最后终于完成了,可适用windows 和linux 。    具体功能,cvs列没有顺序要求。直接贴下脚本!#...
    99+
    2023-01-31
    脚本 文件 python
  • Python脚本实时处理log文件的方法
    这个Python脚本是用来对实时文件的内容监控,比如 Error 或者 time out 字段都可以进行自定义;算是我的第一个真正的Python脚本,自己感觉还是比较臃肿,不过打算放到blog上记录一下(还...
    99+
    2022-06-04
    脚本 实时 文件
  • Shell脚本如何逐行处理文本文件
    经常会对文体文件进行逐行处理,在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理.有多种解决方法如下: 1.通过read命令完成. read 命令从标准输入中读取一行,并把输入行的每个字段的...
    99+
    2022-06-04
    shell处理文本文件快速 shell处理文件 shell处理文本
  • 使用Shell脚本怎么逐行处理文本文件
    使用Shell脚本怎么逐行处理文本文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。通过read命令完成.read 命令从标准输入中读取一行,并把输入行的每个字...
    99+
    2023-06-14
  • Python脚本文件外部传递参数的处理方法
    目录前言一、流文本处理二、argparse 模块三、argv 列表四、argv + argparse前言 我们写的 Python 脚本需要修改参数,当我们将脚步上传到服务器或者给不会编程的人用时,会比较不方便,如果直...
    99+
    2022-06-02
    Python脚本外部传递参数 Python传递参数 Python 外部指定参数
  • 批处理FTP上传文件脚本分享
    本篇内容主要讲解“批处理FTP上传文件脚本分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“批处理FTP上传文件脚本分享”吧!背景:本机一个文件“A.TXT"在C盘根目录下,需要上传到...
    99+
    2023-06-08
  • python文件处理笔记之文本文件
    目录1. 建立文件1.1 文本文件代码实现1.2 代码编写分析2. 基本的读写文件2.1 用文件对象write(s)方法写内容2.2 用文件对象read()方法读取内容2.3 连续用...
    99+
    2022-11-12
  • python post传输文件脚本
    ps:背景,无法ssh相互访问机器(一般中间有堡垒机阻拦)的情况下,但是使用域名可以进行访问的情况下 可以使用http协议进行文件的上传。服务器端代码(接受post的一端)#coding=utf-8 from BaseHTTPServer ...
    99+
    2023-01-31
    脚本 传输文件 python
  • python脚本修改hosts文件
    记一次使用python脚本来修改hosts文件,由于公司服务器需要换ip地址,服务器里都是Linux系统,而hosts文件中有些解析的ip,手动一台一台的解析太麻烦,就写了这个脚本。本来以为感觉很简单,但是写的过程真不好写,也试过shell...
    99+
    2023-01-31
    脚本 文件 python
  • Proe文件版本归1,python脚本
     PROE软件对模型文件的版本管理是通过后缀来区分的, 所以多次保存后文件夹内文件名字会形如: abc.prt.1 abc.prt.2 abc.prt.3 cdd.prt.1 等等,久而久之,文件版本就会非常多,会非常臃肿,而且保留过多的历...
    99+
    2023-01-31
    脚本 版本 文件
  • PHP Linux脚本操作实践:处理Excel文件
    一、Excel文件的读取与提取数据使用PHPExcel库读取Excel文件在Linux下,我们可以使用PHPExcel库来读取Excel文件。PHPExcel是一个PHP类库,用于在PHP中处理Excel文件。首先,我们需要安装PHPExc...
    99+
    2023-10-21
    Linux 文件处理 PHP Linux脚本操作实践:Excel
  • 如何使用 BASH 脚本处理日志文件?
    BASH 脚本是一种强大的工具,可以帮助我们快速处理大量的日志文件。在本文中,我们将介绍如何使用 BASH 脚本处理日志文件,并演示一些常见的技巧和技术。 首先,我们需要了解一些基本的 BASH 脚本语法。在 BASH 脚本中,我们可以使用...
    99+
    2023-07-09
    自然语言处理 bash 日志
  • python编写文件统计脚本
    python编写文件统计脚本 思路:用os模块中的一些函数(os.listdir()、os.path.isdir()、os.path.join()、os.path.abspath()等) 实现功能:显示多级目录,以及自己要找的具体文件类型...
    99+
    2023-01-30
    脚本 文件 python
  • python 脚本实现备份文件
    ''' 功能:备份文件 版本:1.0 作者:白 ''' import  os,time,sys d_dir = '/data/backup/' d_file = 'system_bak.tar.gz' s_dir = ['/etc','/b...
    99+
    2023-01-31
    脚本 备份文件 python
  • Python脚本怎么指定文件
    小编给大家分享一下Python脚本怎么指定文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Python的优点有哪些1、简单易用,与C/C++、Java、C# 等...
    99+
    2023-06-14
  • Shell脚本如何实现文本处理
    这篇文章给大家分享的是有关Shell脚本如何实现文本处理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。4.1 排序文本4.1.1 行的排序未提供命令行选项时,整个记录会根据当前locale所定义的次序排序。在传统...
    99+
    2023-06-09
  • 数据库中如何处理带有引号文本限定符的CVS
    这篇文章给大家分享的是有关数据库中如何处理带有引号文本限定符的CVS的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 公司需要导入数据到MSSQLSE...
    99+
    2022-10-18
  • 将Python脚本打包成exe文件
    目录1.安装依赖2.整合资源3.修改脚本并测试4.准备图标(可略过)5.pyinstaller打包6.结论总结相信很多朋友在用Python写完代码之后都迫不及待的想发给对象交流(装X...
    99+
    2022-11-13
  • Bash脚本:如何优雅地处理文件和目录?
    Bash是Linux和Unix系统上最流行的命令行解释器之一。它是一种功能强大的脚本语言,可以用于处理文件和目录。在本文中,我们将讨论如何使用Bash脚本来优雅地处理文件和目录。 查找文件 Bash提供了一些强大的命令来查找文件。其中...
    99+
    2023-11-10
    对象 bash npm
  • linux 定时清理文件脚本 shell
    工作中经常用到的,都是从网上搜集的,记录一下方便查找 语句写法: find 对应目录 -mtime +天数 -name “文件名” -exec rm -rf {} \; 例1: f...
    99+
    2022-06-03
    linux 清理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作