<p><strong>分析:</strong></p>
<p>下面是循环的作用,一行一行:</p>
<pre><code># Reading each line of input:
for line in infile:
# Ignore that first line and read
# the rest of the file.
# Split that into individual fruit names
fruit=infile.read().split()
# Sort the list of fruits #2 through end-of-file
fruits = sorted(fruit)
# Make a string representation of that list.
timeflies = str(fruits)
# Put a single line feed after that string and dump it
# to the output file.
outfile.write(timeflies + '\n');
print (timeflies)
</code></pre>
<p>为了说明这一点,<code>timeflies</code>是一个如下所示的字符串:</p>
<pre><code>"['apple', 'kumquat', 'persimmon', 'pineapple', 'tomato']"
</code></pre>
<p>它不是一个列表;它是一个字符串,看起来像您下一步可能要使用的列表。也许下一个有用的步骤是</p>
<pre><code>timeflies = '\n'.join(fruits)
</code></pre>
<p>但是,您仍然浪费了循环(它只能执行一次)并丢失了第一行。你知道那是怎么回事吗?你知道吗</p>
<p><strong>解决方案:</strong></p>
<pre><code>infile = open("unsorted_fruits.txt", "r")
outfile=open("sorted_fruits.txt","w")
# Make a list of the input fruits
fruit_list = []
for line in infile:
fruit_list.extend(line.split())
# Sort that list
fruit_list.sort()
# Print it to the output file, one line at a time
for fruit in fruit_list:
print(fruit, file=outfile)
</code></pre>
<p>输入文件:</p>
<pre><code>banana
pineapple
tomato
kumquat
apple
persimmon
</code></pre>
<p>输出文件:</p>
<pre><code>$ cat sorted_fruits.txt
apple
banana
kumquat
persimmon
pineapple
tomato
</code></pre>