<p>由于这些原因,您的代码应该在while结束时给出索引器错误</p>
<pre><code>i += 1
x = x * int(Prime_list[i])
</code></pre>
<p>更不用说还有一个</p>
^{pr2}$
<p>这将允许再进行一次迭代,从而使用Primorial生成索引器_列表.写入也。如果你的代码运行正常,你应该检查是否有任何尝试。。。除非用它来调用这段代码。在那里你可以找到清空文件的原因。在某个地方,您可能只是在这段代码之后打开并关闭文件?或者类似这样的逻辑等价物可能是原因:</p>
<pre><code>while (i <= L_List):
Primorial_List = open("Primorial.txt","w")
try:
Primorial_List.write("%d :: %s :: %d \n"%(i,Prime_list[i],x))
except:
pass
Primorial_List.close()
</code></pre>
<p>或者像这样:</p>
<pre><code>try:
while (i <= L_List):
Primorial_List = open("Primorial.txt","w")
Primorial_List.write("%d :: %s :: %d \n"%(i,Prime_list[i],x))
Primorial_List.close()
except:
pass
</code></pre>
<p>也就是说密码会从Primorial移走_列表.写入方法,因为它将导致上一次迭代的索引器错误,因为Prime\u list[i]。在</p>
<p>万一没有尝试。。。除了blocks之外,我假设您已经将I+=1语句推送到x=x*Prime_list[I]旁边,这也会使文件为空,但在结尾处以IndexError结尾。在</p>
<p>另一方面,正如其他人提到的,您应该打开一次文件并写入一次,而不是连续写入。更好的是,使用Python的<a href="https://www.python.org/dev/peps/pep-0343/" rel="nofollow">with</a>语句进行文件操作。以下可能是等效的:-)</p>
<pre><code>with open("C:\\Users\\JoãoPedro\\Documents\\Python\\PrimeFactoring\\primes1.txt") as fo:
Prime_list = fo.read()
Prime_list = Prime_list.split()
L_List = len(Prime_list)
i = 29420
x = [Here goes a really large number]
new_file_content = ""
while (i < L_List):
new_file_content += "%d :: %s :: %d \n"%(i,Prime_list[i],x)
print(str(i) + " :: " + Prime_list[i])
x = x * int(Prime_list[i])
i += 1
with open("Primorial.txt", "w") as fo:
fo.write(new_file_content)
print("Finished")
</code></pre>