[Tutor] Writing a txt from dbf

Steven D'Aprano steve at pearwood.info
Tue Sep 28 23:56:26 CEST 2010

On Wed, 29 Sep 2010 04:33:51 am Susana Iraiis Delgado Rodriguez wrote:
> Hello dear pythonists:
> I'm developing an application in python, I'm new using this
> programming language I used to work with Java, but in my job my
> superiors suggested me to develop in this language.
> I'm trying to read a dbf file, I already done it but my code shows me
> all the lines without spaces, I want it toshow line per line and then
> write the lines into a plain txt file.

I am not sure what you mean. My guess is that you want something like:


in the file, but instead you get:


Am I right?

> My code is: 
> from dbf import *
> from string import strip

There is no need for this any more, as the functions in the string 
module are now also available as string methods. So instead of:

import string
print string.lower(my_string)

you can write:


> import sys
> def demo1():
>  a = open ("archivo.txt","w")
>  dbf = Dbf('tapalpa_05_plani_point.dbf',new=False)

As a matter of style, it is normal to use 4 spaces for indents, not 1. 
You are welcome to use whatever you like in your own code, but many 
people find 1 space indents hard to see and so when writing for others 
(such as when asking a question here) you should use at least 2 spaces.

>  for k in dbf:
>   print '%s'%(strip(k[2]))

The print command automatically adds a newline after the string, so each 
printed string should be on its own line. But later, when you write the 
string to the file, you must add the newline yourself.

>   l=()
>   l=(strip(k[2]))
>   a.write(l)

There's no need to clear l with the line l=() first. Just write:

    l = k[2].strip()
    a.write(l + '\n')

Steven D'Aprano

More information about the Tutor mailing list