2017-09-28 3 views
-1

많은 텍스트 줄로 구성된 텍스트 파일이 있습니다.파이썬에서 텍스트 파일의 첫 번째 행만 바꿉니다.

내용에 관계없이 python v3.6을 사용하여 텍스트 파일의 첫 줄만 바꾸고 싶습니다. 필자는 라인 단위 검색을 수행 할 필요가 없으며 그에 따라 라인을 교체 할 필요가 없습니다. 질문이 중복되지 않습니다. Search and replace a line in a file in Python

다음은 제 코드입니다.

import fileinput 

file = open("test.txt", "r+") 
file.seek(0) 
file.write("My first line") 

file.close() 

코드는 부분적으로 작동합니다. 원래 첫 번째 행의 문자열 길이가 "My first line"보다 길면 초과 된 하위 문자열은 여전히 ​​남아 있습니다. 더 명확하게하기 위해 원본 줄이 "XXXXXXXXXXXXXXXXXXXXXXXXX"이면 출력은 "My first lineXXXXXXXXXXXXXX"이됩니다. 출력이 "My first line"이되기를 원합니다. 코드를 구현하는 더 좋은 방법이 있습니까?

+0

가능한 중복 https://stackoverflow.com/questions/39086/search-and- 파일에서 파이썬으로 바꾸기) – wwii

+0

SO에 오신 것을 환영합니다. 시간이 걸릴 경우 [ask]와 여기에 포함 된 링크를 읽으십시오. – wwii

+0

@wwii, 나는 중복이 있다고 생각하지 않는다. 나는 그 질문을 편집했다. – user3848207

답변

1

이렇게하려면 readline 및 writelines를 사용할 수 있습니다. 예를 들어, 두 개의 행을 포함하는 "test.txt"라는 파일을 만들었습니다 (Out [3]에 있음). 파일을 연 후 f.readlines()를 사용하여 문자열 형식의 목록에있는 모든 행을 가져올 수 있습니다. 그런 다음, 내가 할 필요가있는 것은 문자열의 첫 번째 요소를 원하는대로 바꾸고 다시 쓰는 것입니다.

with open("test.txt") as f: 
    lines = f.readlines() 

lines # ['This is the first line.\n', 'This is the second line.\n'] 

lines[0] = "This is the line that's replaced.\n" 

lines # ["This is the line that's replaced.\n", 'This is the second line.\n'] 

with open("test.txt", "w") as f: 
    f.writelines(lines) 
+0

코드 또는 데이터의 이미지를 게시하지 마십시오. 시간이 걸릴 경우 [ask]와 여기에 포함 된 링크를 읽으십시오. – wwii

+0

공식적으로 파일을 처음 종료하지 않고 파일을 두 번 여는 것이 좋습니다. – saintsfan342000

+0

@ saintsfan342000 실제로 그것은 좋은 지적입니다. 나는 단지 물어 본 질문에 대한 해결책을 보여 주려고했다. 항상 파일을 닫은 다음 다시 열어야합니다. –

1

파일을 읽고 쓰는 것은 @Zhang이 이미 응답합니다.

모든 줄을 읽는 대신 효율을 높이기위한 답을주고 있습니다.

사용 : shutil.copyfileobj

from_file.readline() # and discard 
to_file.write(replacement_line) 
shutil.copyfileobj(from_file, to_file) 

Reference

([검색 파이썬에서 파일의 라인을 대체]의
관련 문제