2013-05-16 66 views
1

它一定很容易,但我仍然无法弄清楚。假设我正在阅读很多带有glob模块的txt文件,并且做了一些处理,然后用matplotlib绘制它们。python 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