2014-09-08 2 views
0

ArcMap에 ascii gridded 파일 (.txt)을 가져와 래스터 이미지를 만듭니다. 나는 파이썬 코드를 사용하여 최대한 많은 것을 시도하고있다. 그러나 아직 너무 멀지 않았다!txt 파일 추가, 많은 파일에 대해 반복하는 방법

현재 .hdr 파일을 .txt 파일에 추가하여 프로세스를 시작하고 있습니다. 먼저 수동으로 hdr 파일을 txt로 변환하므로 두 개의 txt 파일을 추가 할 수 있습니다. (나는 누군가가 이것을 더 빨리 할 수있는 방법을 제안 할 수 있으면 고맙겠습니다 .htr을 txt에 추가 할 수 있습니까?).

그때 개별적으로 다음 스크립트를 사용하여 두 개의 TXT 파일을 추가하고 : 오픈과 함께

파일 이름의 = [ 'hdr.txt', 'yyyymmout.txt'] 를 ("yyyymm_hdr" 'w') OUTFILE : 개방 (FNAME)와 INFILE과 같은 : 라인 INFILE에서 : 파일 이름에 FNAME에 대한 outfile.write (선)이 스크립트는 개별 파일에 대한 잘 작동하지만, 내가 시도하려는

스크립트 내의 모든 파일을 수행합니다. 나는 1900 년부터 2010 년까지 매월 파일을 가지고있다. 당신의 도움이

답변

0

우선 수동으로 TXT에 HDR 파일을 변환하고, 그래서 두 개의 TXT 파일을 추가 할 수 있습니다 1200 개 + ...

감사합니다.

각 파일 앞에 hdr.txt의 내용을 첨부 하시겠습니까? 이를 위해 추가 할 필요가 없으며 즉시 수행 할 수 있습니다.

hdr.txt이 꽤 작은 경우 메모리로 전체 내용을 읽고 입력 파일에서 복사하기 전에 각 출력 파일에 쓰기 만하면됩니다.


이 스크립트

은 개별 파일에 대한 잘 작동하지만 스크립트 내에서 모든 파일을 시도하고 싶습니다. 나는 1900 년부터 2010 년까지 매월 파일을 가지고있다. 1200 + ...

그럼 1 년짜리 파일 이름을 생성 할 수있는 코드를 작성해야합니다.

('{}{}out.txt'.format(y, m) for y in range(1900, 2011) for m in range(1, 13)) 

또는, 당신은 압박을 이해하지 않는 경우 : 또한

for y in range(1900, 2011): 
    for m in range(1, 13): 
     fname = '{}{}out.txt'.format(y, m) 
     with open(fname) as infile: 
      # etc. 

을, 당신은 단지 다른 파일에 전체 파일을 복사 할, 그리고 파일이 너무 큰 수없는 경우 메모리에 맞추기 위해 하나의 파일 read()과 다른 하나의 파일 write()에 훨씬 더 간단합니다.


그래서, 그것을 함께 넣어, 당신이 원하는 것을 생각하는 것은 :

with open('hdr.txt') as f: 
    hdr = f.read() 

for y in range(1900, 2011): 
    for m in range(1, 13): 
     infname = '{}{}in.txt'.format(y, m) 
     outfname = '{}{}out.txt'.format(y, m) 
     with open(infname) as infile, open(outfname, 'w') as outfile: 
      outfile.write(hdr) 
      outfile.write(infile.read())