Arnaud Delobelle wrote:
karthik...@gmail.com writes:

I would like to have a txt file of single line with
[1 2 3 .........100]

I try something like
q=arange(100)
fl=file('tmp.ext','w')
fl.writelines(str(q))
fl.close()

Unfortunately my output is

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22
23 24
 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49
 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
73 74
 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
98 99]

ie there is automatic split in line after 76 characters. How do I
avoid it? Thanks.

You need to tell us more about the arange() function you use and what
object it returns.

That would be *numpy.arange

*Since numpy has it's own idea about formatting, you would have to roll your own.

How about:

   q=arange(100)
   *s = '[' + ' '.join([`x` for x in q]) + ']'*
   fl=file('tmp.ext','w')
   fl.*write*(s)
   fl.close()
See: http://docs.python.org/tutorial/datastructures.html#list-comprehensions

Incidentally, it's a funny thing that* writelines *coincidentally does what you expect it to do when given a string. I suspect that you need to read the documentation on* writelines*:

file.writelines(/sequence/)
   Write a sequence of strings to the file. The sequence can be any
   iterable object producing strings, typically a list of strings.
   There is no return value. (The name is intended to match
   readlines(); writelines() does not add line separators.)

So you are asking it to effectively concatenate the characters in your string, (which gives you back your original string), and write the result. Simply using* write *instead would be more efficient in this case.

Ken

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to