파일 읽고 쓰기

Professor Ho's Wiki Site

  • 참고
#encoding:utf-8
f= open("C:/logs.txt","r")  # 읽는 데이터는 ANSI 형태로 저장함
lines = f.readlines()
f.close()
 
aList = []
nameList = []
 
for i in lines :
 aList.append(i.split())
 
print aList[0][0]
print len(lines)
 
del aList[0]
 
for j in aList:
 nameList.append(j[8])
 
print nameList.count(u"관형".encode('cp949'))
 
newList = []
tList =[]
 
for j in aList:
 newList.append([j[7]+j[8], j[9]])
 
for j in set(nameList):        # set을 사용하면 중복되는 문자는 모두 제거함
 tList.append((nameList.count(j),j))
 
#tList= [(a, nameList.count(a)) for a in set(nameList)] 이렇게 한줄로도 표기가능
 
tList.sort()
for j in tList:
 print j[1], j[0]
  • 이름 학번 점수가 들어있는 파일을 작성 후 읽어서 이름 점수의 파일로 출력하기예)" 홍길동 4333232 89김말동 4543433 70 "" 홍길동 89김말동 70"
    • 4번 문제 힌트: 방법은 크게 2가지가 있습니다. 각 학생의 정보에 대하여 리스트를 만든 후 더하여 하나의 리스트 안에 모든 항목을 넣은 후 for, write()문을 사용하여 텍스트에 입력한 후 각 학생의 리스트에서 학번요소를 지운 후 반복하는 방법이 있고, 각 학생의 정보에 대하여 문자열을 만든 후 하나의 문자열로 합한 후 for, write()문을 사용하여 텍스트에 입력 후 split()을 써서 각 요소를 쪼개어 리스트로 만든 후 필요한 리스트값만으로 새 리스트를 구성하여 위의 방법을 반복하는 방법이 있습니다.이 외에도 여러가지 방법이 있으니 함께 탐구해 보시기 바랍니다. 

또한 한글은 기존의 방법으로는 write()가 적용되지 않으니, 문자열이나 리스트 앞에는 'u', 뒤에는 '.encode('cp949')'를 붙일 수 있도록 합니다 ex) u"가나다 123".encode('cp949') , [u'가나다'.encode('cp949'), 12, 333..]

  1. fr = open("C:\\aaa.txt", 'r')                 #파일 이름을 aaa.txt 로 만들었습니다.   허원 7969314 90 과 같은 정보가 여러줄 들어있음
  2. fw = open("H:\\bbb.txt", 'w')    
  3. tempa = fr.readlines()               #현상태(이름 학번 점수)를 텍스트파일에 출력
  4. for b in tempa:                                  
  5.  print b
  6.  c=b.split()
  7.  fw.writelines(c[0]+" "+c[2]+"\n")                  #이름 점수의 파일로 출력                         
  8. fr.close()                   #파일 닫기
  9. fw.close()
개인 도구