2017-02-27 18 views
-1

我已经编写了一个脚本,它在第一次运行时基本上创建了两个新文件夹,如果文件夹尚不存在。Python,在与脚本相同的目录中创建一个新的文件/文件夹

import os 

try: 
    os.makedirs('results/graphs') 

except OSError: 
    pass 

而且每次运行脚本,图形是在results/graphs文件夹中产生的。

但是我注意到最近,如果脚本是从另一个目录中运行(例如脚本是home/user/script/但我从运行:home/user/programs/),在home/user/programs/创建新的文件夹。

我的目标是最终只在脚本文件夹中创建文件夹,因此所有生成的最终图形将注定为home/user/script/results/graphs

有没有办法实现这个使用python?

我正在使用Debian 8和python 2.7.13。这些图是使用matplotlib生成的。

+0

看看这个问题: http://stackoverflow.com/questions/918154/relative-paths-in-python – Szabolcs

+0

的可能的复制[如何可靠地打开与Python脚本相同的目录中的文件](http://stackoverflow.com/questions/4060221/how-to-reliably-open-a-file-in-the-same-directory-as -a-python-script) –

+0

您是否尝试过'sys.path [0]'来获取脚本的位置? –

回答

0

在您的脚本中results/graphs指向您运行脚本的文件夹中的结果文件夹。如果您始终希望在脚本中创建文件夹/home/user/script/results/graphs,请改为在脚本中使用~/script/results/graphs。或者,你可以硬编码整个路径,/home/user/script/results/graphs

0

除了之前提到的硬编码之外,还有另一种方法。您可以使用__file__来提取脚本所在文件的路径。然后你可以使用它作为父路径追加到结果/图

0

这对我一个解决方案,检查它(我试过在Windows上):

import os 
d = os.path.dirname(__file__) # directory of script 
p = r'{}/results/graphs'.format(d) # path to be created 

try: 
    os.makedirs(p) 
except OSError: 
    pass 
相关问题