Ask Your Question
1

How to copy from a text file

asked 2021-05-16 21:59:42 +0200

Sanu gravatar image

updated 2021-05-16 23:42:21 +0200

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.

edit retag flag offensive close merge delete

Comments

What error do you get ?

tmonteil gravatar imagetmonteil ( 2021-05-16 22:04:02 +0200 )edit

1 Answer

Sort by ยป oldest newest most voted
2

answered 2021-05-16 22:16:16 +0200

tmonteil gravatar image

updated 2021-05-18 14:20:14 +0200

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.

edit flag offensive delete link more

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: 2021-05-16 21:59:42 +0200

Seen: 209 times

Last updated: May 18 '21