Stud.txt 파일을 열고 "A"를 "Orange"로 바꾸려면 어떻게해야합니까?
Stud.txt 파일을 열고 "A"를 "Orange"로 바꾸려면 어떻게해야합니까?
답변:
with open("Stud.txt", "rt") as fin:
with open("out.txt", "wt") as fout:
for line in fin:
fout.write(line.replace('A', 'Orange'))
같은 파일의 문자열을 바꾸고 싶다면 아마도 그 내용을 로컬 변수로 읽어 들인 다음 닫고 쓰기 위해 다시 열어야 할 것입니다 :
이 예제에서는 블록이 종료 된 후 파일을 닫는 with 문 을 사용 하고with
있습니다. 일반적으로 마지막 명령이 실행을 완료하거나 예외로 인해 파일이 닫힙니다 .
def inplace_change(filename, old_string, new_string):
# Safely read the input filename using 'with'
with open(filename) as f:
s = f.read()
if old_string not in s:
print('"{old_string}" not found in {filename}.'.format(**locals()))
return
# Safely write the changed content, if found in the file
with open(filename, 'w') as f:
print('Changing "{old_string}" to "{new_string}" in {filename}'.format(**locals()))
s = s.replace(old_string, new_string)
f.write(s)
파일 이름이 다르면 단일 with
명령문으로 더 우아하게이 작업을 수행 할 수 있다는 점을 언급 할 가치가 있습니다 .
#!/usr/bin/python
with open(FileName) as f:
newText=f.read().replace('A', 'Orange')
with open(FileName, "w") as f:
f.write(newText)
Linux를 사용 중이고 단어 dog
를 cat
다음 과 같이 바꾸려면 다음을 수행하십시오.
text.txt :
Hi, i am a dog and dog's are awesome, i love dogs! dog dog dogs!
Linux 명령 :
sed -i 's/dog/cat/g' test.txt
산출:
Hi, i am a cat and cat's are awesome, i love cats! cat cat cats!
원본 게시물 : /ubuntu/20414/find-and-replace-text-within-a-file-using-commands
pathlib 사용 ( https://docs.python.org/3/library/pathlib.html )
from pathlib import Path
file = Path('Stud.txt')
file.write_text(file.read_text().replace('A', 'Orange'))
입력 및 출력 파일이 달랐다 경우에 당신은 두 개의 서로 다른 변수를 사용하는 것 read_text
하고 write_text
.
단일 교체보다 더 복잡한 변경을 원하면 결과를 read_text
변수에 할당하고 처리하고 새 내용을 다른 변수에 저장 한 다음 새 내용을 다음을 사용하여 저장합니다.write_text
.
파일이 큰 경우 메모리에서 전체 파일을 읽지 않고 Gareth Davidson이 다른 답변 ( https://stackoverflow.com/a/4128192/3981273 ) 에서 보여주는 것처럼 한 줄씩 처리하는 방법을 선호합니다. , 물론 입력 및 출력을 위해 두 개의 별개 파일을 사용해야합니다.
가장 쉬운 방법은 파일의 각 줄 ( 'A'가 저장 됨)을 반복한다고 가정하고 정규 표현식으로 수행하는 것입니다.
import re
input = file('C:\full_path\Stud.txt), 'r')
#when you try and write to a file with write permissions, it clears the file and writes only #what you tell it to the file. So we have to save the file first.
saved_input
for eachLine in input:
saved_input.append(eachLine)
#now we change entries with 'A' to 'Orange'
for i in range(0, len(old):
search = re.sub('A', 'Orange', saved_input[i])
if search is not None:
saved_input[i] = search
#now we open the file in write mode (clearing it) and writing saved_input back to it
input = file('C:\full_path\Stud.txt), 'w')
for each in saved_input:
input.write(each)