在提示文件中排序和打印多行

sorting and printing multiple lines in a prompted file

这是我现有的代码:

filename = input("Enter file name (with extension) to read: ")
if filename == 'x':
    exit()
else:
    c = open(filename, "r")
    print("\nThe file,", filename, "opened successfully!")
    print("The file", filename)
    print(c.readlines())
    c.close()

我的输出就是我输入的文件,太棒了!但我的问题是我只需要弄清楚如何按排序顺序打印列表。由于列表是由用户输入生成的,我没有使用排序功能的经验,我可以直接对 c.readlines 进行排序吗?

编程就是分解,将大问题分解成小块。在您的程序中有几个不同的任务:提示用户输入文件名、打开该文件、对行进行排序并打印它们。你已经掌握了前两个,所以现在把它们从你的脑海中抛开,专注于后两个。打开文件后,文件是否由用户硬编码和输入都没有区别。

要对列表进行排序,您必须使用主要选项:调用 l.sort() 将其原地排序,或调用 sorted(l) 以 return 排序后的副本而不修改原件。让我们使用第二个并循环 sorted():

的结果
for line in sorted(c.readlines()):
    print(line)

readlines() 的调用是可选的。也可以直接循环遍历文件,就是shorthand循环遍历。

for line in sorted(c):
    print(line)

(我自己更喜欢明确地调用 readlines()。这是一种风格选择;任何一种方式都是可以接受的。)