why writing list to file puts each item from list on seperate line?

H

homepricemaps

if i use the code below to write a list to a file

list = (food, price, store)
data.append(list)
f = open(r"test.txt", 'a')
f.write ( os.linesep.join( list ) )


it outputs to a file like this

apple
..49
star market

and i want it to do

apple, .49. star market

any ideas
 
L

limodou

30 Dec 2005 20:22:52 -0800 said:
if i use the code below to write a list to a file

list = (food, price, store)
data.append(list)
f = open(r"test.txt", 'a')
f.write ( os.linesep.join( list ) )


it outputs to a file like this

apple
.49
star market

and i want it to do

apple, .49. star market

any ideas

my box is windows xp, so :
'\r\n'

If you want to seperate them with space, you should:

f.write ( ''.join( list ) )

and list = (food, price, store)
the list is not called "list", but "tuple", a real list should be

aList = [food, price, store]
 
H

homepricemaps

i want them to be on the same line when they are written to the file.
right now they are written like this:

food
price
store

i want them to be written like this

food price store

how do i do that?
 
L

limodou

30 Dec 2005 20:44:29 -0800 said:
i want them to be on the same line when they are written to the file.
right now they are written like this:

food
price
store

i want them to be written like this

food price store

how do i do that?
>>> print ' '.join(['food', 'price', 'store'])

os.linesep represents newline.
 
S

Steven D'Aprano

if i use the code below to write a list to a file

list = (food, price, store)

Why are you shadowing the built in type list? This is bad practice. Sooner
or later you will do this:

list = [1, 2, 3]
something = process(list)
.... lots of code ...
# try to convert to a list
myList = list(something)

and then you'll spend ages trying to work out why list() raises an
exception.


data.append(list)
f = open(r"test.txt", 'a')
f.write ( os.linesep.join( list ) )


it outputs to a file like this

apple
.49
star market

That's what you told it to do. Walk through the code:
data = []
L = ("apple", "0.49", "market")
data.append(L)
data
[("apple", "0.49", "market")] # a list with one tuple

So far so good. But now watch:

I hope you aren't opening the file EVERY time you want
to write a single line

Remember what L is: ("apple", "0.49", "market"). You now join that list
(actually a tuple) into a single string: "apple\n0.49\nmarket\n" and write
that string to the file.

What happened to data? It never gets used after you append to it.

and i want it to do

apple, .49. star market

Then what you want to do is change data to a list of strings rather than
a list of tuples. Before appending to data, you join the tuple ("apple",
"0.49", "market") like so:

data.append(", ".join(L) + "\n") # note newline at the end of each line

Then, after you have appended ALL the lines, you open your file once for
writing, and write data in one go:

f.writelines(data)


Hope this helps.
 
H

homepricemaps

never mind i figured out what you were saying,. worked like a
charm!!!!!

thanks for your help.

yaffa
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Staff online

Members online

Forum statistics

Threads
473,734
Messages
2,569,441
Members
44,832
Latest member
GlennSmall

Latest Threads

Top