dbf文件使用python读取程序

  • 使用python读取dbf
# -*- coding: utf-8 -*-
import struct,csv,datetime
class DBF_Operator():
    @staticmethod
    def SHHQ_dbf_reader(f):
        numrec, lenheader = struct.unpack(‘<xxxxLH22x‘, f.read(32))
        numfields = (lenheader - 33) // 32

        fields = []
        for fieldno in xrange(numfields):
            name, typ, size, deci = struct.unpack(‘<11sc4xBB14x‘, f.read(32))
            name = name.replace(‘\0‘, ‘‘)       # eliminate NULs from string
            fields.append((name, typ, size, deci))

        terminator = f.read(1)
        assert terminator == ‘\r‘

        fields.insert(0, (‘DeletionFlag‘, ‘C‘, 1, 0))
        fmt = ‘‘.join([‘%ds‘ % fieldinfo[2] for fieldinfo in fields])
        fmtsiz = struct.calcsize(fmt)
        result = []#(stock,S3)
        #suspend_result = []
        for i in xrange(numrec):
            record = struct.unpack(fmt, f.read(fmtsiz))
            flag = record[0]
            stock = record[1]
            if stock == "000000":
                pass
            elif stock[0] == ‘6‘ and flag == ‘ ‘:
                result.append((record[1],record[3]))
        return result

    @staticmethod
    def SZHQ_dbf_reader(f):
        numrec, lenheader = struct.unpack(‘<xxxxLH22x‘, f.read(32))
        numfields = (lenheader - 33) // 32

        fields = []
        for fieldno in xrange(numfields):
            name, typ, size, deci = struct.unpack(‘<11sc4xBB14x‘, f.read(32))
            name = name.replace(‘\0‘, ‘‘)       # eliminate NULs from string
            fields.append((name, typ, size, deci))

        terminator = f.read(1)
        assert terminator == ‘\r‘

        fields.insert(0, (‘DeletionFlag‘, ‘C‘, 1, 0))
        fmt = ‘‘.join([‘%ds‘ % fieldinfo[2] for fieldinfo in fields])
        fmtsiz = struct.calcsize(fmt)
        result = []#(stock,S3)
        for i in xrange(numrec):
            record = struct.unpack(fmt, f.read(fmtsiz))
            flag = record[0]
            stock = record[1]
            if stock == "000000":
                pass
            elif (stock[0] == ‘0‘ or stock[:3] == ‘300‘) and flag == ‘ ‘:
                result.append((record[1],record[3]))
        return result

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 03:52:47

dbf文件使用python读取程序的相关文章

python读取文件,python读取的1变成\ufeff1

'\ufeff1' 1 movies={} 2 fm=open(self.path+'/movie.txt',encoding='utf-8') 3 w2=open('./data/1.txt','a') 4 for line in fm: 5 (movie_id,title)=line.strip().split("||") 6 # print(type(movie_id)) 7 print(movie_id,'-----') 8 # int(movie_id) 9 # int(mo

Office/Access 2013 扩展支持xbase/DBF 文件

最新的Access 2013 安装后,已经不能对dbf文件进行链接读取了,Access 2010以前的版本都可以,如果以前的项目用了Access链接大量的dbf文件的话, 升级Access 2013后,访问链接dbf文件的表,就会出错,具体的解决办法是,安装Access 2010的运行时环境,在改注册表. 我的环境是win7 64bit + Office 2013 plus 64bit. 1,下载Access 2010的支持环境AccessDatabaseEngine_X64.exe https

C++/Php/Python/Shell 程序按行读取文件或者控制台

写程序经常需要用到从文件或者标准输入中按行读取信息,这里汇总一下.方便使用 1. C++ 读取文件 1 #include<stdio.h> 2 #include<string.h> 3 4 int main(){ 5 const char* in_file = "input_file_name"; 6 const char* out_file = "output_file_name"; 7 8 FILE *p_in = fopen(in_fi

python读取文件小结

python读取文件小结 你想通过python从文件中读取文本或数据. 一.最方便的方法是一次性读取文件中的所有内容并放置到一个大字符串中: all_the_text = open('thefile.txt').read( )     # 文本文件中的所有文本 all_the_data = open('abinfile','rb').read( )    # 二进制文件中的所有数据 为了安全起见,最好还是给打开的文件对象指定一个名字,这样在完成操作之后可以迅速关闭文件,防止一些无用的文件对象占用

Python 小程序,对文件操作及其他

下面是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比如说,从文件中读取一行数据,分别存放于列表中,再对列表进行操作,如去掉里面的重复项,排序等操作. 常见对文件中行进行操作: #这里列出两个常用的方法 方法01: 一次性读取所有行 >>> f = file('1.txt') >>> while 1: lines = f.readlines() if not lines: break for line in lines: print l

Python 小程序,对文件操作及其它

以下是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比方说,从文件里读取一行数据.分别存放于列表中,再对列表进行操作.如去掉里面的反复项.排序等操作. 常见对文件里行进行操作: #这里列出两个经常使用的方法 方法01: 一次性读取全部行 >>> f = file('1.txt') >>> while 1: lines = f.readlines() if not lines: break for line in lines: print

Java读取Level-1行情dbf文件极致优化(2)

最近架构一个项目,实现行情的接入和分发,需要达到极致的低时延特性,这对于证券系统是非常重要的.接入的行情源是可以配置,既可以是Level-1,也可以是Level-2或其他第三方的源.虽然Level-1行情没有Level-2快,但是作为系统支持的行情源,我们还是需要优化它,使得从文件读取,到用户通过socket收到行情,端到端的时延尽可能的低.本文主要介绍对level-1行情dbf文件读取的极致优化方案.相信对其他的dbf文件读取应该也有借鉴意义. Level-1行情是由行情小站,定时每隔几秒把d

python 读取一个目录下的所有目录和文件

觉着没事,应该学点东西.找到以前看过的python,试着做了个读取文件的程序.不管效果怎么,总算成功了. #!/usr/bin/python # -*- coding:utf8 -*- import os allFileNum = 0 def printPath(level, path): global allFileNum ''''' 打印一个目录下的所有文件夹和文件 ''' # 所有文件夹,第一个字段是次目录的级别 dirList = [] # 所有文件 fileList = [] # 返回

Python读取SQLite文件数据

近日在做项目时,意外听说有一种SQLite的数据库,相比自己之前使用的SQL Service甚是轻便,在对数据完整性.并发性要求不高的场景下可以尝试! 1.SQLite简介: SQLite是一个进程内的库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它(如安卓系统),它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多