<p>要处理文件,有一个上下文管理器的概念,可以查看它。原因是我们必须记住打开/关闭文件,如下所示:</p>
<pre><code>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)
</code></pre>
<p>既然我们想要读入数据,就必须明确地将其添加到变量中</p>
<pre><code>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)
</code></pre>
<p>也许我们想在结尾去掉“换行符”,我们可以通过“去掉”字符<code>'\n'</code>来做到这一点:</p>
<pre><code>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)
</code></pre>
<p>最后,我们想得到一些具体的行。我们可以使用一个简单的if语句来实现这一点:</p>
<pre><code>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 ]
</code></pre>