os.path.join 不加入目录和文件
os.path.join not join directory and file
我写了一个简单的函数,我相信我做得很好,但是我出错了。
我的代码:
array = ['/home/sergey/Документы/008.jpeg']
save_dir = os.path.join(os.path.dirname(array[0]), "Converted_files")
os.makedirs(save_dir)
for file in array:
if file.endswith(srcSfx):
im = Image.open(file).convert("RGB")
print (save_dir)
p = os.path.join(save_dir, file[:-len(srcSfx)] + destSfx)
print(p)
im.save(p, destSfx)
我想创建一个文件夹并在其中保存一些图像。但是图像保存在原始文件夹中,而不是 'save_dir'
文件夹中。
代码打印输出:
/home/sergey/Документы/Converted_files
/home/sergey/Документы/008.png
为什么'008.png'
没有放入'save_dir'
?
如果array
中的文件名是绝对路径,这将不起作用。 join
将从绝对路径重新启动文件名。例如,Windows join('C:/x', 'C:/y')
结果为 'C:/y'
。在 Linux, join('/x', '/y')
returns '/y'
.
在你的循环中 file[:-len(srcSfx)] + destSfx
是一个绝对路径,所以预期的前缀 save_dir
被简单地丢弃了。为避免这种情况,在构建 save_dir
:
时调用 basename
similarly to how you used dirname
p = os.path.join(save_dir, os.path.basename(file)[:-len(srcSfx)] + destSfx)
作为未成年人,我通常更喜欢导入像
这样的名字
from os.path import basename, dirname, join
在那种情况下,结果会更短且更易于阅读:
save_dir = join(dirname(array[0]), "Converted_files")
...
join(save_dir, basename(file)[:-len(srcSfx)] + destSfx)
我写了一个简单的函数,我相信我做得很好,但是我出错了。
我的代码:
array = ['/home/sergey/Документы/008.jpeg']
save_dir = os.path.join(os.path.dirname(array[0]), "Converted_files")
os.makedirs(save_dir)
for file in array:
if file.endswith(srcSfx):
im = Image.open(file).convert("RGB")
print (save_dir)
p = os.path.join(save_dir, file[:-len(srcSfx)] + destSfx)
print(p)
im.save(p, destSfx)
我想创建一个文件夹并在其中保存一些图像。但是图像保存在原始文件夹中,而不是 'save_dir'
文件夹中。
代码打印输出:
/home/sergey/Документы/Converted_files
/home/sergey/Документы/008.png
为什么'008.png'
没有放入'save_dir'
?
如果array
中的文件名是绝对路径,这将不起作用。 join
将从绝对路径重新启动文件名。例如,Windows join('C:/x', 'C:/y')
结果为 'C:/y'
。在 Linux, join('/x', '/y')
returns '/y'
.
在你的循环中 file[:-len(srcSfx)] + destSfx
是一个绝对路径,所以预期的前缀 save_dir
被简单地丢弃了。为避免这种情况,在构建 save_dir
:
basename
similarly to how you used dirname
p = os.path.join(save_dir, os.path.basename(file)[:-len(srcSfx)] + destSfx)
作为未成年人,我通常更喜欢导入像
这样的名字from os.path import basename, dirname, join
在那种情况下,结果会更短且更易于阅读:
save_dir = join(dirname(array[0]), "Converted_files")
...
join(save_dir, basename(file)[:-len(srcSfx)] + destSfx)