2017-12-13 8 views
0

내가 파일 포함 '을 Master.sql'가에/각 라인의 편지를 첫 번째 단어를 쓰기 :새 파일

a.b.c 
d.e.f 
g.h.i 

을하고 난 그냥 첫 글자 'databases.sql'에 기록 할 , 이렇게 :

a 
d 
g 

여기 내 코드이지만 마지막 문자 'g'를 반환합니다.

with open ('master.sql', 'r') as f: 
    for line in f: 
     x=(line.split('.')[0]) 


with open('databases.sql', 'w') as f: 
    f.write(str(x)) 

어떻게 해결할 수 있습니까?

+1

당신은'x'를 저장하지 않습니다, 그래서 당신은 마지막 값을 얻을 ... –

답변

4

읽는 동안 데이터를 작성해야합니다. 그렇지 않으면 원하는 작업을 수행 할 수 없습니다. 다행히도 with을 사용하면 여러 파일을 동시에 열 수 있습니다. 이것은 당신을 위해 작동해야합니다. file.write 자동으로 하나를 추가하지 않기 때문에

with open ('master.sql', 'r') as f1, open('databases.sql', 'w') as f2: 
    for line in f1: 
     f2.write(line.split('.')[0] + '\n') 

는 줄 바꿈을 작성하는 것을 잊지 마십시오.

0

이용리스트 :

x = [] 

with open('master.sql', 'r') as f: 
    for line in f.readlines(): 
     x.append(line.split('.')[0]) 

with open('databases.sql', 'w') as f: 
    for word in x: 
     f.write(str(word)+'\n') 
0

변수 x의 모든 값을 받지만, 각각의 루프의 마지막 값을 덮어. 따라서 결과는 'g'입니다.

당신이 이런 식으로 할 수있는 모든 값을 저장하려면

lst = [] 
with open ('master.sql', 'r') as f: 
    for line in f: 
     lst.append(line.split('.')[0]) 
    x = '\n'.join(lst) 

with open('databases.sql', 'w') as f: 
    f.write(x)