Для работы с файлами существует концепция контекстных магеров, на которую полезно взглянуть. Причина в том, что мы должны не забывать открывать / закрывать файлы, как показано ниже:
fname = "myfile.txt" # Name of file
# 1. Opening, reading and closing file
FILE = open(fname)
for line in FILE:
print(line)
FILE.close()
# 2. Use the 'with' context manager to manage opening/closing
with open(fname) as FILE:
for line in FILE:
print(line)
Теперь, когда мы хотим прочитать данные, мы должны явно добавить их в переменную
fname = "myfile.txt" # Name of file
# 1. Read data, simple
with open(fname) as FILE:
data = []
for line in FILE:
data.append(line)
# 2. Read data directly into the variable
with open(fname) as FILE:
data = list(FILE)
Возможно мы хотим убрать «новые строки» в конце, это мы можем сделать, «убрав» символ '\n'
:
fname = "myfile.txt" # Name of file
# 1. Read data and strip 'newlines', simple
with open(fname) as FILE:
data = []
for line in FILE:
data.append( line.rstrip() )
# 2. Read data and strip newlines using `map` function
with open(fname) as FILE:
data = map(str.rstrip, FILE)
Наконец, мы хотим получить несколько специфических c строк. Это можно сделать с помощью простого оператора if:
fname = "myfile.txt" # Name of file
readLines = [0, 2, 4] # Lines to be read from file, zero indexed
# 1. Read data from specific lines and strip 'newlines', simple
with open(fname) as FILE:
data = []
for line in FILE:
if idx in readLines:
data.append( line.rstrip() )
# 2. Read data from specific lines and strip newlines using 'list comprehension'
with open(fname) as FILE:
data = [ line.rstrip() for idx, line in enumerate(FILE) if idx in readLines ]