Data_r_and_w(csv,json,xlsx)

import os
import sys
import argparse

try:
    import cStringIO as StringIO
except:
    import StringIO
import struct
import json
import csv

def import_data(import_file):
    ‘‘‘
    Imports data from import_file.
    Expects to find fixed width row
    Sample row: 161322597 0386544351896 0042
    ‘‘‘
    mask = ‘9s14s5s‘
    data = []
    with open(import_file, ‘r‘) as f:
        for line in f:
            # unpack line to tuple
            fields = struct.Struct(mask).unpack_from(line)
            # strip any whitespace for each field
            # pack everything in a list and add to full dataset
            data.append(list([f.strip() for f in fields]))
    return data

def write_data(data, export_format):
    ‘‘‘
    Dispatches call to a specific transformer
    and returns data set.
    Exception is xlsx where we have to save data in a file.
    ‘‘‘
    if export_format == ‘csv‘:
        return write_csv(data)
    elif export_format == ‘json‘:
        return write_json(data)
    elif export_format == ‘xlsx‘:
        return write_xlsx(data)
    else:
        raise Exception("Illegal format defined")

def write_csv(data):
    ‘‘‘
    Transforms data into csv.
    Returns csv as string.
    ‘‘‘
    # Using this to simulate file IO,
    # as csv can only write to files.
    f = StringIO.StringIO()
    writer = csv.writer(f)
    for row in data:
        writer.writerow(row)
    # Get the content of the file-like object
    return f.getvalue()

def write_json(data):
    ‘‘‘
    Transforms data into json.
    Very straightforward.
    ‘‘‘
    j = json.dumps(data)
    return j

def write_xlsx(data):
    ‘‘‘
    Writes data into xlsx file.
    
    ‘‘‘
    from xlwt import Workbook
    book = Workbook()
    sheet1 = book.add_sheet("Sheet 1")
    row = 0
    for line in data:
        col = 0
        for datum in line:
            print datum
            sheet1.write(row, col, datum)
            col += 1
        row += 1
        # We have hard limit here of 65535 rows
        # that we are able to save in spreadsheet.
        if row > 65535:
            print >> sys.stderr, "Hit limit of # of rows in one sheet (65535)."
            break
    # XLS is special case where we have to
    # save the file and just return 0
    f = StringIO.StringIO()
    book.save(f)
    return f.getvalue()
   
   
if __name__ == ‘__main__‘:
    # parse input arguments
    parser = argparse.ArgumentParser()
    parser.add_argument("import_file", help="Path to a fixed-width data file.")
    parser.add_argument("export_format", help="Export format: json, csv, xlsx.")
    args = parser.parse_args()

if args.import_file is None:
        print >> sys.stderr, "You myst specify path to import from."
        sys.exit(1)

if args.export_format not in (‘csv‘,‘json‘,‘xlsx‘):
        print >> sys.stderr, "You must provide valid export file format."
        sys.exit(1)

# verify given path is accesible file
    if not os.path.isfile(args.import_file):
        print >> sys.stderr, "Given path is not a file: %s" % args.import_file
        sys.exit(1)

# read from formated fixed-width file
    data = import_data(args.import_file)

# export data to specified format
    # to make this Unix-lixe pipe-able
    # we just print to stdout
    print write_data(data, args.export_format)

原文地址:https://www.cnblogs.com/cmnz/p/8329494.html

时间: 2024-11-10 23:02:02

Data_r_and_w(csv,json,xlsx)的相关文章

2Python进阶强化训练之csv|json|xml|excel高

Python进阶强化训练之csv|json|xml|excel高 如何读写csv数据? 实际案例 我们可以通过http://table.finance.yahoo.com/table.csv?s=000001.sz,这个url获取中国股市(深市)数据集,它以csv数据格式存储: Date,Open,High,Low,Close,Volume,Adj Close 2016-09-15,9.06,9.06,9.06,9.06,000,9.06 2016-09-14,9.17,9.18,9.05,9.

CSV to XLSX (专用)

$csvFile = "F:\ACL\HZ ACL\ACL-APAC.CSV" $path = "F:\ACL\HZ ACL\ACL-APAC.XLSX" $rows = Import-Csv -Path $csvFile $Excel = New-Object -ComObject excel.application $Excel.visible = $false $workbook = $Excel.workbooks.add() $excel.cells.it

python cookbook第三版学习笔记七:python解析csv,json,xml文件

CSV文件读取: Csv文件格式如下:分别有2行三列. 访问代码如下: f=open(r'E:\py_prj\test.csv','rb') f_csv=csv.reader(f) for f in f_csv:     print f 在这里f是一个元组,为了访问某个字段,需要用索引来访问对应的值,如f[0]访问的是first,f[1]访问的是second,f[2]访问的是third. 用列索引的方式很难记住.一不留神就会搞错.可以考虑用对元组命名的方式 这里介绍namedtuple的方法.

CSV、JSON文件导入到mongo数据库

首先生成一个文本文件,可以是json或者csv的,每行一条数据,很好整理吧,用一般的文本编辑器或者从office中都可以生成. 然后执行下面的导入命令: /usr/local/mongodb/bin/mongoimport -d cms -c cms_tags_20120727 –type csv –file /tmp/tag0810.csv -h localhost -port 11111 –upsert -f name 参数说明: -d 数据库名 -c collection名 –type 文

在Linux中CSV转换成XLSX

在linux中,把csv文件转换成excel表格(xlsx或者xls) $ echo -e 'surname,name,age\nCarlo,Smith,23\nJohn,Doe,46\nJane,Doe,69\nSarah,Meyer,23\n' > example.csv $ unix2dos example.csv $ ssconvert example.csv example.xlsx $ ssconvert example.csv example.xls 原文地址:https://ww

使用solr将CSV/XML/DB/JSON数据发布为Rest Service

Download http://lucene.apache.org/solr/downloads.html Apache Solr入门基础——Windows下安装与配置 https://blog.csdn.net/wsxsxz_/article/details/62048595 Start $ cd E:\01_SOFT\Java\solr-8.2.0\bin $ solr start solr start –p <端口号> 单机版启动solr服务 solr restart –p <端口

最全最新&#127464;&#127475;中国【省、市、区县、乡镇街道】json,csv,sql数据

中华人民共和国行政区划代码 中华人民共和国行政区划(五级):省级.地级.县级.乡级和村级. 来自中华人民共和国民政部,用于查询中国省,市和区数据的网站. 中华人民共和国行政区划代码,更新时间:2019-11-25 统计用区划和城乡划分代码,更新时间:2019-01-31 Github: https://github.com/uiwjs/province-city-china 数据更新 Diff 数据更新 2019-11-25 数据更新 2019-11-05 数据更新 2019-06-21 安装

java 关于xlsx(xls) 和 csv 文件的数据解析

1.适用于xlsx 和 xls  <!--xlsx和xls文件pom依赖--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> package com.test.demo.util; import org.ap

php使用ajax导出CSV或者EXCEl(thinkphp)方法

首先我强烈推荐看到这篇文章的你将导出文件设置为csv格式的文件 实际测试导出csv文件的速度是excel文件的10几倍左右 首先我先介绍csv文件的导出的方法: 如果你单纯是在数据导出界面上通过用户点击生成csv或者excel按钮通过服务器往浏览器输出excel或者csv 如果数据量小的化可以使用这样的方法(这种方法无法使用ajax)网上百度一下一堆介绍 这里有较为详细的方法介绍 和源码 我这里介绍的是 当数据量比较大时比如生成excel或者csv文件可能需要 几分钟这时候我们需要在用户点击生成