2013-05-16 5 views
1

쉽지 만 나는 아직도 그것을 이해할 수 없습니다. glob 모듈로 txt 파일을 많이 읽고 있다고 가정하고, 일부 처리를하고 나중에 matplotlib로 그 파일을 플로팅합니다.파이썬 matplotlib는 플롯을 저장합니다

import glob 
ascii = sorted(glob.glob('C:/Users/ENAMUL/PYTHON/*.txt')) 
for count,i in enumerate(ascii): 
........ 
........ 

이제이 수치를 저장하고 싶습니다. 나는 숫자를 세 어서 구할 수있는 이렇게 할 수 있습니다.

plt.savefig(str(count)+'png') 

입력 파일 이름을 사용하여 파일을 저장하려면 어떻게해야합니까? 제발 도와주세요.

답변

2

i 때문에, 파일의 이름을 포함합니다 :

import os.path 

.... 

plt.savefig(os.path.splitext(os.path.basename(i))[0] + '.png') 

이렇게 작동합니다. os.path.basename 반환 파일 이름 :

In [2]: os.path.basename('foo/bar/baz.bat') 
Out[2]: u'baz.bat' 
다음

splitext는 분명하지 : 그래서

In [3]: os.path.splitext(os.path.basename('foo/bar/baz.bat')) 
Out[3]: (u'baz', u'.bat') 

:

In [4]: os.path.splitext(os.path.basename('foo/bar/baz.bat'))[0] + '.png' 
Out[4]: u'baz.png' 

당신이 경로를 유지하려면, 단지 basename 호출을 제거하고 만 splitext :

In [5]: os.path.splitext('foo/bar/baz.bat')[0] + '.png' 
Out[5]: u'foo/bar/baz.png' 
+0

이름이''ascii''에 이미 저장되어있을 때이 추가 경로를 사용하면 어떤 이점이 있습니까? – Schorsch

+1

@Schorsch'ascii '의 이름은 여전히 ​​경로와 확장자를 포함합니다. –

+0

감사. 나는 그 부분을 놓쳤다. – Schorsch

0

당신은 ascii에 파일 이름을 저장 - 그래서 당신은 그림 저장할 때 사용 할 수 있어야한다 : 루프에서

plt.savefig(ascii[count] + '.png') 
+0

아마도 거기에'os.path.basename' (또는 이와 유사한 것)이 있습니다 ... – mgilson

+0

그러면 확장자가'.txt.png' 인 파일 이름이 생성됩니다. 아마 의도 한 것이 아니었을 것입니다. –

+0

실제로이 줄이 제 일을합니다. 그러나 나는 또한 위에있는 설명을 이해합니다. 지금은 그 그림을 내 입력 폴더에 저장합니다. 그림 용 폴더를 만들면 어떻게 그 폴더로 이동할 수 있습니까? – haq

관련 문제