2012-06-25 5 views
-1

작동하지만 문자를 대체하지는 않습니다. 먼저 하나의 파일을 열고 다른 파일에 내용을 씁니다. 그리고 나서 두 번째 파일로 일부 특정 문자를 대체하지만 작동하지 않습니다. 어떤 아이디어가 있습니까? 코드는 : 당신이 g.writelines(f)를 호출 한 후파일의 단어 바꾸기

def copy_file(): 

    f=open("cartas.txt","r") 
    g=open("copiar.txt","r+") 
    g.writelines(f) 
    f.close() 

    for line in g: 
     line = line.replace("s","ch") 
     g.write(line) 
    g.close() 

copy_file() 

답변

1

을 : 대체하기 때문에, 당신이 필요로 교체를 수행합니다

+0

을 왜 그냥 전역 교체하고 모든 일을 작성하지 않을 것입니다 ...이 라인별로 갈 필요가 없습니다. –

+0

@JoranBeasley OP는 암시 적으로 "특정 문자를 대체"하려고한다고 말하고 있습니다. 즉, 한 줄에 하나 이상의 패턴을 바꿀 수도 있습니다. – heltonbiker

+1

@ JoranBeasley 두 가지 이유 : 첫째, 실제 교체가 더 복잡하고 선에 따라 달라지며 두 번째로 모든 콘텐츠를 한 번에 메모리에 저장하지 않을 수 있습니다. – poke

1

, g에 대한 읽기 포인터는 파일의 끝에, 그래서 for line in g: 나중에 반복 아무 상관이 없습니다. 당신은 g의 라인을 통해 반복하고 또한 수정 쓰기를 시도

f = open("cartas.txt","r") 
g = open("copiar.txt","w") 
g.write(f.read().replace('s','ch')) 
g.close() 
f.close() 
0

이 파이썬 예제는 라인으로 라인을 교체 할 필요가 없습니다 전역 행은 g입니다. 그리고 그 전에 실제로 f의 내용을 g으로 복사합니다.

당신이 직접 변환하는 동안 f의 라인을 반복하고 g에 기록되어 일을해야한다 :

f = open('cartas.txt', 'r') 
g = open('copiar.txt', 'r+') 

for line in f: 
    line = line.replace('s', 'ch') 
    g.write(line) 

f.close() 
g.close()