2014-11-30 2 views
-3

я был дан файл с одним именем в каждой строке в произвольном порядке myInput01.txt и мне нужно заказать его в порядке возрастания и вывода упорядоченные имена одно имя в строке в файл под названием myOutput01.txt.Сортировка файла в порядке возрастания

myhandle = open('myInput01.txt', 'r') 
aLine = myhandle.readlines() 
sorted(aLine) 
aLine = myOutput01.txt 
print myOutput01.txt 
+0

Любая конкретная ошибка в коде, который вы имеете (предположительно) уже разработаны? – BorrajaX

+0

Вы можете изменить вопрос, чтобы добавить этот код? – BorrajaX

ответ

1

Для будущих посетителей, самый простой и самый краткий способ сделать это в Python (в предположении, вроде не собирается взрывать системной памяти) составляет:

with open('myInput01.txt') as fin, open('myOutput01.txt', 'w') as fout: 
    fout.writelines(sorted(fin)) 
0
outputFile = open('myOutput01.txt','w') 
inputFile = open('myInput01.txt','r') 
content = inputFile.readlines() 
for name in sorted(content): 
    outputFile.write(name + '\n') 
inputFile.close() 
outputFile.close() 
1

Таким образом, эта часть в порядке:

myhandle = open('myInput01.txt', 'r') 
aLine = myhandle.readlines() 

Открываешь файл (получить обработчик файлов в myhandle) и прочитать его строки в aLine.

Теперь, есть проблема с:

sorted(aLine) 

sorted функция ничего к aLine аргумент не делать. Он возвращает отсортированный новый список. Так что либо вы используете aLine.sort() для сортировки на месте или назначить выход функции sorted другой переменной:

sorted_lines = sorted(aLine) 

Посмотрите this sorting tutorial.

Кроме того, эти две линии очень проблематично:

aLine = myOutput01.txt 
print myOutput01.txt 

Вы переписав aLine переменную, что называется myOutput01.txt, который неизвестен сценарий (что это, где это определено?). Вам нужно действовать аналогично чтению файла. Вам нужно открыть обработчик и написать файлу, используя этот обработчик в качестве ссылки.

Понадобится:

mywritehandle = open('myOutputO1.txt', 'w') 
    mywritehandle.writelines(sorted_lines) 
    mywritehandle.close() 

Или, чтобы избежать вызова close() явно:

with open('myOutputO1.txt', 'w') as mywritehandle: 
    mywritehandle.writelines(sorted_lines) 

Вы должны ознакомиться с file objects и быть в курсе, что myOutput01.txt очень отличается от "myOutput01.txt".

+0

У них есть '.writelines' - поэтому' mywritehandle.writelines (отсортировано (myhandle)) 'отлично - не нужно' .readlines' и т. Д. –

+0

WOOOOOT !!!! :: head_explosion :: Я тупой. Спасибо @JonClements – BorrajaX

+0

Просто покончите с 'aLine', так как' sorted' вернет отсортированный список из итерабельного (и обработчики файлов будут итерабельными), также обратите внимание, что 'aLine' не будет сортироваться как' sorted (aLine) 'будет создайте отсортированный список, оставляя 'aLine' неизменным, а затем просто отмените список ...буквально единственная строка, в которой вы нуждаетесь, находится в приведенном выше комментарии. –

Смежные вопросы