<p>使用<code>.read()</code>一次读取整个文件。你知道吗</p>
<p>您可以在<code>for</code>循环中逐行读取它。你知道吗</p>
<pre><code>new_file = []
fp = open("test.txt", "r")
for line in fp:
line = line.rstrip("\n") # The string ends in a newline
# str.rstrip("\n") removes newlines at the end
if "Hello" in line:
line = "55" + line + "55"
if "World" in line:
line = "66" + line + "66"
new_file.append(line)
fp.close()
new_file = "\n".join(new_file)
print(new_file)
</code></pre>
<p>通过读取整个文件并按“\n”(换行符)拆分,可以一次完成所有操作</p>
<pre><code>new_file = []
fp = open("text.txt")
fp_read = fp.read()
fp.close()
for line in fp_read.split("\n"):
if "Hello" # ...
</code></pre>
<p>但这会一次将整个文件加载到内存中,而for循环只逐行加载(因此这可能不适用于较大的文件)。你知道吗</p>
<p>这样做的行为是,如果行中有“Hello”,那么它前后都会得到“55”(即使行是“sieohfoiHellosdf”),对于“World”也是一样的,如果它同时有“Hello”和“World”(例如,“Hello,World!”或者“asdifhoasdfhHellosdjfhsodWorldosadh”),它前后都会得到“6655”。你知道吗</p>
<p>作为旁注:您应该使用<code>with</code>打开一个文件,因为它可以确保稍后关闭该文件。你知道吗</p>
<pre><code>new_file = []
with open("test.txt") as fp: # "r" mode is default
for line in fp:
line = line.rstrip("\n")
if "Hello" in line:
line = "55" + line + "55"
if "World" in line:
line = "66" + line + "66"
new_file.append(line)
new_file = "\n".join(new_file)
print(new_file)
</code></pre>