patternpythonModerate
Reading ints line from a file in Python
Viewed 0 times
readingfilelinepythonfromints
Problem
I have to list a integers from a text file separated by newlines into a python list. I ended up with the code above which works (for my case) but certainly is far form optimal.
Now I have much less code, but I'm not sure for which cases split() works correctly.
def readIntegers(pathToFile):
f = open(pathToFile)
contents = f.read()
f.close()
tmpStr = ""
integers = []
for char in contents:
if char == '\r':
integers.append(int(tmpStr))
tmpStr = ""
continue
if char == '\n':
continue
tmpStr += char
return integersNow I have much less code, but I'm not sure for which cases split() works correctly.
def readIntegers(pathToFile):
with open(pathToFile) as f:
a = [int(x) for x in f.read().split()]
return aSolution
No need for
or, if that’s more to your fancy:
A
Note that, contrary to what I said earlier, wrapping the file object in a
(Note that I’ve adapted the method name to Python conventions.)
split (you can use readlines). But no need for readlines, for that matter:def read_integers(filename):
with open(filename) as f:
return map(int, f)or, if that’s more to your fancy:
def read_integers(filename):
with open(filename) as f:
return [int(x) for x in f]A
file object is simply iterable in Python, and iterates over its lines.Note that, contrary to what I said earlier, wrapping the file object in a
with block is highly recommended. Python doesn’t actually guarantee (although it recommends it) that objects are disposed of automatically at the end of the scope. Worse, it’s not guaranteed that a file object that is collected actually closes the underlying stream.(Note that I’ve adapted the method name to Python conventions.)
Code Snippets
def read_integers(filename):
with open(filename) as f:
return map(int, f)def read_integers(filename):
with open(filename) as f:
return [int(x) for x in f]Context
StackExchange Code Review Q#12443, answer score: 16
Revisions (0)
No revisions yet.