Python,在与脚本相同的目录中创建新文件/文件夹

时间:2017-02-27 13:16:17

标签: python

我已经编写了一个脚本,如果文件夹已经存在,那么在第一次运行时基本上会创建两个新文件夹。

import os

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

except OSError:
    pass

每次运行脚本时,图表都会在results/graphs文件夹中生成。

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

我的目标是最终只在脚本文件夹中创建文件夹,因此生成的所有最终图形都将发送到home/user/programs/

是否有使用python实现此目的?

我使用的是Debian 8和python 2.7.13。图表是使用matplotlib生成的。

6 个答案:

答案 0 :(得分:1)

这对我来说是一个解决方案,检查一下(我在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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

的父路径追加

答案 3 :(得分:0)

感谢所有回复。从@Szabolcs在第一条评论中发布的链接中找到答案:Relative paths in Python

答案 4 :(得分:0)

您要做的就是定义脚本所在的路径。可以在代码中通过

完成此操作
path = 'home/user/script/'

或通过使用文件对话框从用户那里获得输入。

然后,您可以使用path变量创建目录。

os.makedirs(path + 'results/graphs')

答案 5 :(得分:-1)

##creating folder
import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()

file_path = filedialog.askopenfilename()

dirctry = os.path.dirname(file_path)
toolSharePath = os.path.abspath(dirctry)
final_directory = os.path.join(toolSharePath, r'new_folder')
if not os.path.exists(final_directory):
   os.makedirs(final_directory,exist_ok=True)