如何将图像导出到 GIMP 中的子目录?

How to export images into subdirectory in GIMP?

我使用 GIMP 进行一些批量编辑,其中一部分是使用从原始图像 "filename" 中获取的文件名导出绘画,代码如下:

pdb.file_png_save_defaults(ima, drawable, fullpath, filename)

此时此刻,我有

fullpath=filename

因此它将图像保存到与源文件相同的文件夹中,文件名和完整路径相同。

我想做的是把它放到这个文件夹的子目录下,我们就叫它"subfolder"。但如果我尝试:

fullpath = '\subfolder\'+filename

很明显,我收到一个错误,因为我使用 Python(或任何编程语言)工作了将近半个小时,但我几乎不知道自己在做什么。有人知道如何实现导出图片到子文件夹吗?

更新:

现在看起来像这样

sourcename = pdb.gimp_image_get_filename(ima)
basedir = os.path.dirname(sourcename)

if os.path.isdir(os.path.join(basedir,'Subfolder')) is False:
    os.makedirs(os.path.join(basedir,'Subfolder'))

fullpath = os.path.join(basedir,'Subfolder',filename)

...而且效果很好。几乎。现在我正面临 basedir 中变音符号的问题。当 basedir 包含类似 "C:\Úklid\" 的内容时,当代码在其中创建 Subdirecotry 时,我会收到 "no such file or directory" 错误。在我将源文件夹重命名为 "C:\Uklid\" 后,它可以轻松工作。但我确实需要它来处理 Windows OS 中的每条有效路径。有人可以帮我吗?

更新 2:

看起来 unicode() 成功了:

sourcename = pdb.gimp_image_get_filename(ima)
basedir = os.path.dirname(sourcename)

if os.path.isdir(os.path.join(basedir,'Subfolder')) is False:
    os.makedirs(unicode(os.path.join(basedir,'Subfolder')))

fullpath = os.path.join(basedir,'Subfolder',filename)

试试这个:

import os

sourcename = pdb.gimp_image_get_filename(ima) # gets full name of source file
basedir= os.path.dirname(sourcename) # gets path
name = pdb.gimp_layer_get_name(ima.layers[0]) # gets name of active layer
filename = name+'.png'
fullpath = os.path.join(basedir,'subfolder',filename) # use os.path.join to build paths
# new line vvv
os.makedirs(os.path.join(basedir,'subfolder')) # make directory if it doesn't exist
drawable = pdb.gimp_image_active_drawable(ima)
pdb.file_png_save_defaults(ima, drawable, fullpath, filename) # saves output file