2012-11-06 3 views
0

유닉스 (특히, 나는 bash을 사용하고 있습니다)에서 파일 내용을 쉽게 정렬 할 수 있습니다. 나는 파일이 제공 :파일 내용 정렬

[email protected]:~$ cat testSort.txt 
3  1  test01 
8  2  test02 
6  3  test03 
7  4  test04 
1  5  test05 

는 1 열을 기준으로 정렬 된 값을 반환합니다 sort 실행을

[email protected]:~$ sort testSort.txt 
1  5  test05 
3  1  test01 
6  3  test03 
7  4  test04 
8  2  test02 

결과 그 중 내가 할 수있는 파일이나 프로그램을 필요로 파이프; 파이썬에서 이처럼 쉬운 방법이 있습니까? 아니면 내 파일을 읽고, 일종의 데이터 구조로 저장 한 다음 다시 저장해야합니까? 내가 downvote을받은 이유

혼란

잘 모르겠어요 - 방법은 일종의을 달성하기 위해 (즉, 1 워드 명령) 유닉스와 같이 간단이 있다면 내가 물었다. 나는 내가 원했던 것을 보여주기위한 모범을 보였다. 어떤 식으로이 질문은 "질문에 연구 노력이 없다는 것을 의미합니까, 불분명하거나 유용하지 않습니까?"

+5

'정렬'이라고 어떻게 생각하십니까? –

+1

파이썬에서'sort'가 다시 구현되었습니다 :'sys.stdout.writelines (sorted (sys.stdin))'. –

+0

@MartijnPieters -'sort '가 실제로 어떻게 작동하는지 전혀 모르겠습니다. – ChrisW

답변

3

얼마나 쉽게하고 싶습니까? 이것은 사전 식으로 정렬되지만 추가 key 함수를 sorted에 전달하여 임의의 기준에 따라 정렬하도록 수정할 수 있습니다.

with open('input') as f: 
    sorted_file = sorted(f) 

#save to a file 
with open('output') as f: 
    f.writelines(sorted_file) 

#write to stdout 
import sys 
sys.stdout.writelines(sorted_file) 
+0

나는 OP가 아마 stdout에 결과를 원한다고 생각하고 있습니다 ... –

+0

그러면 1 라인 답이없는 것처럼 보입니다! 읽는 중으로 돌아 가기이 파이썬 프로그래밍을 이해하지 못했기 때문에 ... – ChrisW

+1

@ChrisW -'import sys; sys.stdout.writelines (sorted (open ('input')))'? 두 줄이'; '로 합쳐졌습니다. - 그런 식으로 코드를 작성하는 것은 좋지 않습니다. – mgilson