Fixed-length text file to database script

Edwin.Madari at Edwin.Madari at
Thu Aug 14 20:55:01 CEST 2008

#your thought is right. 
def sizes2fields(sizes):
   d = []
   begin = 0
   for i in sizes:
      if begin:
         end = begin + i
      else: end = i
      d.append((begin, end))
      begin += i
   return tuple(d)

def slicestring(s, fields):
   d = []
   for i in fields:
   return tuple(d)

sizes = [16,4,8,8,8]
s = '123456789012345678901234567890123456789012345678901234567890'
print slicestring(s, sizes2fields(sizes))
prints out:
('1234567890123456', '7890', '12345678', '90123456', '78901234')

hope it helps.
thanks Edwin

-----Original Message-----
From: at
[ at]
On Behalf Of Eric Wertman
Sent: Thursday, August 14, 2008 1:59 PM
To: python-list at
Subject: Re: Fixed-length text file to database script

I have a machine (PLC) that is dumping its test results into a fixed-
length text file.

While it has nothing to do with python,  I found that creating a MySQL
table with the proper fixed length char() fields and using 'load data
infile'  was the easiest way to deal with that sort of scenario.   The
python script is the secondary part, that handles the normalization
and proper typing of the first table to the second, permanent storage
area.  But in this case, the more advanced bits are the database and
SQL details, and python is just a very convenient way to build the SQL
statements and execute them.

I'm really not sure what the best way to deal with fixed length data
is in python.  I might define a list with the field lengths and use a
string slicing to get the items.. as a first thought:

myfile = '/somewhere/somefile.txt'
sizes = [16,4,8,8,8]

fd = open(myfile,r)

for line in fd.readlines() :

    idx1 = 0
    for l in sizes :

The information contained in this message and any attachment may be
proprietary, confidential, and privileged or subject to the work
product doctrine and thus protected from disclosure.  If the reader
of this message is not the intended recipient, or an employee or
agent responsible for delivering this message to the intended
recipient, you are hereby notified that any dissemination,
distribution or copying of this communication is strictly prohibited.
If you have received this communication in error, please notify me
immediately by replying to this message and deleting it and all
copies and backups thereof.  Thank you.

More information about the Python-list mailing list