large array in a single line

Dave Angel davea at ieee.org
Tue May 26 11:37:34 EDT 2009


karthik167 at gmail.com wrote:
> 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.
>
>   

I never heard of arange(), but perhaps you meant range() or xrange().  
If so, the first problem is that range(100) starts with 0 and ends just 
before 100, so you only get the values 0 to 99.  So if you need the 
final value to be 100, you need to pass it a 101.

Next problem is that you're using str() on a list.  All that does is try 
to give you some printable representation of the list.  You've observed 
it divides it into lines, but that's arbitrary.  If you want the output 
to look a certain way, build it that way.   Use write instead of 
writelines, and put your own \n at the end.

Create a for loop, iterate over the list q, writing each value with a 
trailing space, and follow the loop with one extra write, containing the 
closing brace, and the newline.

Don't forget the leading brace as well.


Sometimes debugging these things can be easier if you temporarily use 
sys.stdout instead of a file, while you're working on it.





More information about the Python-list mailing list