python 3.4.3 txt 텍스트 를 한 줄 씩 읽 고 무 거 운 방법
1.문자 인 코딩
2.작업 완료 즉시 파일 설명자 닫 기
3.코드 호환성
몇 가지 방법:
#!/bin/python3
original_list1=[" "]
original_list2=[" "]
original_list3=[" "]
original_list4=[" "]
newlist1=[" "]
newlist2=[" "]
newlist3=[" "]
newlist4=[" "]
newtxt1=""
newtxt2=""
newtxt3=""
newtxt4=""
#first way to readline
f = open("duplicate_txt.txt","r+") #
line = f.readline() # readline()
while line:
original_list1.append(line)
line = f.readline()
f.close()
#use "set()" remove duplicate str in the list
# in this way,list will sort randomly
newlist1 = list(set(original_list1))
#newlist1 = {}.fromkeys(original_list1).keys() #faster
#rebuild a new txt
newtxt1="".join(newlist1)
f1 = open("noduplicate1.txt","w")
f1.write(newtxt1)
f1.close()
###################################################################
#second way to readline
for line in open("duplicate_txt.txt","r+"):
original_list2.append(line)
newlist2 = list(set(original_list2))
newlist2.sort(key=original_list2.index) #sort
#newlist2 = sorted(set(original_list2),key=l1.index) #other way
newtxt2="".join(newlist2)
f2 = open("noduplicate2.txt","w")
f2.write(newtxt2)
f2.close()
###################################################################
#third way to readline
f3 = open("duplicate_txt.txt","r")
original_list3 = f3.readlines() # ,
for i in original_list3: #
if not i in newlist3:
newlist3.append(i)
newtxt3="".join(newlist3)
f4 = open("noduplicate3.txt","w")
f4.write(newtxt3)
f4.close()
###################################################################
#fourth way
f5 = open('duplicate_txt.txt',"r+")
try:
original_list4 = f5.readlines()
[newlist4.append(i) for i in original_list4 if not i in newlist4]
newtxt4="".join(newlist4)
f6 = open("noduplicate4.txt","w")
f6.write(newtxt4)
f6.close()
finally:
f5.close()
결과:다시 가기 전:
무 거 운 것 을 제거 한 후(무질서):
무 거 운 것 을 제거 한 후(질서 있 게):
총결산
이 다음 프로그램 은 파일 읽 기와 쓰기 작업 과 링크 List 의 작업 과 관련 되 어 있 습 니 다.글 에서 처음에 언급 한 몇 가지 문 제 는 중국 어 를 사용 하지 않 았 기 때문에 인 코딩 에 관심 이 없 지만 여기 서 언급 해 야 합 니 다.
f = open("test.txt","w")
f.write(u" ")
위의 코드 가 python 2 에서 실행 되면 오류 가 발생 합 니 다.오 류 는 프로그램 이 유 니 코드 문자열 을 직접 저장 할 수 없 기 때문에 인 코딩 을 통 해 str 형식의 바 이 너 리 바이트 시퀀스 로 변환 해 야 저장 할 수 있 습 니 다.
write()방법 은 자동 으로 인 코딩 변환 되 며,기본적으로 ascii 인 코딩 형식 을 사용 합 니 다.ascii 는 중국 어 를 처리 할 수 없 기 때문에 UnicodeEncodeError 가 발생 합 니 다.
정확 한 방식 은 write()방법 을 호출 하기 전에 수 동 형식 으로 변환 하고 utf-8 또는 gbk 로 str 로 변환 하 는 것 입 니 다.
f = open("test.txt","w")
text=u" "
text=text.encode(encoding='utf-8')
f.write(text)
close()문제:닫 지 않 으 면 어떤 영향 이 있 을까요?작업 이 끝 난 후에 파일 을 닫 지 않 으 면 시스템 자원 에 낭 비 를 초래 할 수 있 습 니 다.시스템 이 열 수 있 는 파일 설명자 의 수량 이 제한 되 어 있 기 때 문 입 니 다.리 눅 스 는 65535 입 니 다.
일반적으로 close 이후 에는 OK 이지 만 특수 한 상황 도 존재 합 니 다.예 를 들 어 open()함 수 를 호출 할 때 이미 오류 가 발생 했 고 권한 이 부족 하 며 close()를 호출 하면 오류 가 발생 할 수 있 습 니 다.또 하 나 는 write()때 디스크 공간 이 부족 하면 오 류 를 보고 하고 close()를 실행 할 기회 가 없다 는 것 이다.올 바른 방법 은 try except 를 사용 하여 이상 을 캡 처 하 는 것 입 니 다:
f = open("test.txt","w")
try:
text=u" "
text=text.encode(encoding='utf-8')
f.write(text)
except: IOError as e:
print("oops,%s"%e.args[0])
finally:
f.close()
더 우아 한 문법 은 with...as.
with open("test.txt","w") as f:
text=u" "
f.write(text.encode(encoding='utf-8'))
파일 대상 은 오후 관리자 프로 토 콜 을 실현 합 니 다.프로그램 이 with 구문 에 들 어 갈 때 파일 대상 을 변수 f 에 할당 하고 프로그램 이 with 를 종료 할 때 close()방법 을 자동 으로 호출 합 니 다.호환성 문제:
python 2 와 python 3 의 open()함 수 는 다 릅 니 다.후 자 는 함수 에서 문자 인 코딩 형식 을 지정 할 수 있 습 니 다.
python 2 와 python 3 의 호 환 open()문 제 를 어떻게 해결 합 니까?
io 모듈 의 open()함수,python 2 의 io.open 등가 와 python 3 의 open 함 수 를 사용 합 니 다.
from io import open
with open("test.txt","w",encoding='utf-8') as f:
f.write(u" ")
이상 의 python 3.4.3 에서 한 줄 한 줄 씩 txt 텍스트 를 읽 고 다시 읽 는 방법 은 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 많은 응원 을 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.