2009-11-30 2 views
-1

에 출력 내가 그 이름에 대한 문자열로 다른 파일을 생성 한 소스 파일을 읽어들이는 파이썬 스크립트를 만들 찾고 파일에서 여러 문자열을 대체합니다. 예를 들어찾기 다음 새 파일 이름 파이썬

macaddress.cnf.xml이

내가 macaddress.cnf.xml의 여러 위치에 '6001'에 '6000'을 변경해야 할 소스 파일을 포함, 그때 출력을 원하는 newmacaddress.cnf.xl.

내가이 CSV 또는 무엇이든 함께 할 수 있도록하고 싶습니다 추가하려면

#! /usr/bin/python 
#read and write to file 
f = open(file) 
for line in f: 
    if line.contains('66001'): 
     newline = line.replace('66001', '60001') 

을 가지고 스크립트를 실행하고

60002 >> macaddressfromcsv.cnf을 할 것입니다 .xml 60003 >> macaddressfromcsv.cnf.xml 60004 등

죄송합니다. 어떤 도움이 될지 모르겠다.

+2

당신은이 일을 파이썬과 결혼 했습니까? 당신은 이것을하기 위해 sed를 사용할 수 있습니다. –

+0

간단한 대체를 위해 sed를 사용하십시오. 그 외에, sed는 적절한 도구가 아닙니다. – ghostdog74

+0

@OP, 입력 파일의 예를 보여 주어야합니다 – ghostdog74

답변

1

당신의 모든 목표는 무엇인지 질문에서 명확하지 않다,하지만 난 그들 중 일부를 해결하기 위해 노력할 것입니다.

buffer = ""; 
with open("input_file") as in: 
    buffer = in.read(); 

# do modifications ... 

with open("output_file", 'w') as out: 
    out.write(buffer); 

참고 : 당신이 하나 개의 파일에서 입력을 수정 한 다음 다음을 수행 할 수있는 다른 파일에 기록 할 경우에 당신은 파이썬 버전 2.5에서 from __future__ import with_statement을 사용해야합니다.

는 당신이 실제로 re.sub() 기능을 사용할 수있는 여러 교체하려면 다음 추가 정보를 사용하여 CSV에 관해서는

buffer = re.sub('6000', '6001', buffer) 

을, 더 자세한 설명이나 당신이 달성하려고하는 내용의 예를 제공하십시오.

+0

그의 경우에는 정규식이 필요하지 않습니다. – ghostdog74

0
data=open("input_file").read() 
outfile=open("macaddressfromcsv.cnf.xml","w") 
for i in range(6001,6010): 
    outfile.write(data.replace("6000",str(i)) 
    outfile.write("\n") # you may not need this 
outfile.close() 

편집. 나는 당신이 질문을 분명히 할 필요가 있다고 생각합니다. 하나의 출력 파일 만 있습니까? 아니면 하나의 파일을 대체할까요?