First time here? Check out the FAQ!

Ask Your Question
1

How to copy from a text file

asked 3 years ago

Sanu gravatar image

updated 3 years ago

slelievre gravatar image

I have a file abc.txt containing:

0,1,0,1,1,...,1

I want to store these numbers in an array.

This code is not working:

f = open('path/abc.txt')
L = f.readlines()

for i in range(len(L)):
    A.append(L[i])

Please help me.

Preview: (hide)

Comments

What error do you get ?

tmonteil gravatar imagetmonteil ( 3 years ago )

1 Answer

Sort by » oldest newest most voted
2

answered 3 years ago

tmonteil gravatar image

updated 3 years ago

slelievre gravatar image

Assuming there is no problem with opening the file, here are some hints.

Your list L contains the lines of the file f, which seems to be only one line. Hence L[0] is a string that looks like "0,1,0,1,1,....,1\n" with \n standing for the line feed character.

To extract the elements of that list, remove that character, then split the string to get a list:

sage: L[0].replace('\n','').split(',')
['0', '1', '0', '1', '1',..., '1']

Then turn that list of strings into a list of integers:

sage: A = [ZZ(i) for i in L[0].replace('\n','').split(',')]
sage: A
[0, 1, 0, 1, 1, ..., 1]

Another (simpler) way is to use the csv module that deals well with comma separated values:

sage: r = csv.reader(f)
sage: A = [ZZ(i) for i in next(r)]
sage: A
[0, 1, 0, 1, 1, ..., 1]

Finally, the Python documentation about reading and writing files recommends using with to deal with files.

So instead of

sage: f = open('path/abc.txt')
sage: L = f.readlines()
sage: A = [ZZ(i) for i in L[0].replace('\n','').split(',')]

the advice is to use

sage: with open('path/abc.txt', 'r') as f:
....:     L = f.readlines()
sage: A = [ZZ(i) for i in L[0].replace('\n','').split(',')]

This takes care of closing the file after it has been used, including if some error happens while reading from the file.

Preview: (hide)
link

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 3 years ago

Seen: 306 times

Last updated: May 18 '21