0

所以我必须按字母顺序对文件进行排序,这不是我的问题。我可以这样做,但我的问题是将该排序列表写入一个新文件。这就是我所拥有的。

import os
os.chdir("/Users/User/Documents") #(I put my name where it says "User")

user_file = open("info.txt", "r")
file = user_file.read()
file_string = file.split("\n")

file_string.sort()
print(file_string) #This is here just so I can see that it sorted correctly

end_file = open("write.txt", "w")
for item in file_string:
    end = end_file.write(str(item))
    print(end)

好的,所以我的 info.txt 需要按字母顺序排列,它只是一个颜色列表。所以我的最后 4 行是我苦苦挣扎的地方。我正在尝试获取 file_string 中的每个项目并将它们写入一个新文件,但是 print(end) 给了我它们有多少个字符。我究竟做错了什么?谢谢

4

3 回答 3

2

尝试这样做。是的,这是完整的解决方案。

import os
os.chdir(r'C:\Users\<username>\Documents')
lines = open("info.txt", "r").readlines()
lines.sort()
with open("write.txt", "w") as out:
    out.writelines(lines)
于 2013-10-02T19:43:44.607 回答
0

write()方法返回写入的字节数,因此它按设计工作。

但是,您想将换行符写入文件(因为在换行符上拆分时已将它们从原始文件中删除),并且您不能忘记关闭它,所以

for item in file_string:
    end_file.write(item + "\n")
end_file.close()

会正常工作。

不过,更好的解决方案是:

with open("info.txt", "r") as user_file:
    file = user_file.readlines()
file.sort()
with open("write.txt", "w") as end_file:
    end_file.writelines(file)

甚至

with open("info.txt", "r") as user_file, open("write.txt", "w") as end_file:
    end_file.writelines(sorted(user_file.readlines()))
于 2013-10-02T19:42:50.830 回答
0

在 Python 3.xfile.write中返回写入文件的字符数,您无需担心这一点。

我能想到的唯一问题是你没有'\n'在后面添加任何单词,所以所有项目最终都写在同一行。

with open("write.txt", "w") as f:
    for item in file_string:
        end_file.write(item + '\n')
于 2013-10-02T19:43:08.870 回答