Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对文件进行排序,然后使用Python将其存储到新文件中_Python_File_Sorting - Fatal编程技术网

对文件进行排序,然后使用Python将其存储到新文件中

对文件进行排序,然后使用Python将其存储到新文件中,python,file,sorting,Python,File,Sorting,所以我必须按字母顺序对文件进行排序,这不是我的问题。我可以这样做,但我的问题是将排序后的列表写入一个新文件。这是我的 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()

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

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行是我挣扎的地方。我试图将文件字符串中的每一项都写入一个新文件,但print(end)给出了它们的字符数。我做错了什么? 谢谢方法
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()))
在Python3.x中,返回写入文件的字符数,您不必担心

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

with open("write.txt", "w") as f:
    for item in file_string:
        end_file.write(item + '\n')

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

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)
导入操作系统
chdir(r'C:\Users\\Documents')
lines=open(“info.txt”,“r”).readlines()
line.sort()
打开(“write.txt”、“w”)作为输出:
out.writeline(行)

那么,文件中的项目不是吗?(如果您找不到该文件,它位于您的
文档
目录中。)“打印结束文件”是什么意思?如果要在屏幕上打印已排序的行,只需对文件中的行执行
操作:打印(行)
打印(“”。加入(文件中的行的行))