<p>正如评论者指出的<code>readline()</code>不接受行号作为参数。读取特定行的一种方法是遍历文件,直到到达所需的行。你知道吗</p>
<pre><code>with open("USERNAME.txt", "r") as fp:
for i, line in enumerate(fp, start=1):
if i == num:
u = line
break
with open("PASSWORD.txt", "r") as fp:
for i, line in enumerate(fp, start=1):
if i == num:
pw = line
break
</code></pre>
<p>逐行解释:</p>
<pre><code>with open("USERNAME.txt", "r") as fp:
</code></pre>
<p>以读取模式打开<code>USERNAME.txt</code>文件(由<code>r</code>表示),并将其<a href="https://docs.python.org/3/glossary.html#term-file-object" rel="nofollow noreferrer">file object</a>分配给名为<code>fp</code>的变量。你知道吗</p>
<pre><code> for i, line in enumerate(fp, start=1):
</code></pre>
<p>通常,如果我们想简单地一行一行地遍历一个文件,我们可以这样做</p>
<pre><code> for line in fp:
</code></pre>
<p>但是,我们需要知道与每一行相关联的行号,这样才能找到一条特定的行。<a href="https://docs.python.org/3/library/functions.html#enumerate" rel="nofollow noreferrer">enumerate()</a>让我们将每一行与分配给变量<code>i</code>的行号相关联。<code>enumerate()</code>中的<code>start=1</code>参数指定<code>i</code>将从<code>1</code>开始,而不是默认值<code>0</code>。你知道吗</p>
<p>简言之,这个语句表示我们将循环遍历<code>fp</code>中的行,并在运行时对它们进行计数。你知道吗</p>
<pre><code> if i == num:
</code></pre>
<p>for循环将遍历文件中的每一行,但我们只关心带有用户名/密码的那一行。这里我们检查当前行号<code>i</code>是否是我们要查找的行号。你知道吗</p>
<pre><code> u = line
</code></pre>
<p>如果它是我们要查找的行号,我们将<code>u</code>变量设置为行的内容。你知道吗</p>
<pre><code> break
</code></pre>
<p>关键字退出循环。找到要查找的行之后,我们不需要遍历文件的其余部分,因此我们<code>break</code>以节省时间。你知道吗</p>