【问题标题】:How to save files to new folder using os?如何使用 os 将文件保存到新文件夹?
【发布时间】:2019-11-06 02:03:34
【问题描述】:

我正在尝试创建一个脚本来更改文件夹中所有图像的对比度和清晰度,并将其作为 filename_edited.jpg 保存到新文件夹中

我正在使用 pythong 3.7,导入 os 和 PIL。我有一个包含一些图像的文件夹 - DJI_001.jpg、DJI_002.jpg 等等。包含图像的文件夹称为 test。

我希望他们去的文件夹在 ..\test\novo 中称为“novo”

最初我有这个。它可以工作,但会将图像保存在同一文件夹中:

import PIL
from PIL import Image, ImageEnhance
import os.path, sys

path = "C:\\Users\\r o d r i g o\\Desktop\\001 - progamer\\98 - Image brightness\\test" 
dirs = os.listdir(path)


def teste():
    for item in dirs:
        fullpath = os.path.join(path,item)
        if os.path.isfile(fullpath):
            img = Image.open(fullpath) 
            f, e = os.path.splitext(fullpath) 
            sharpness = ImageEnhance.Sharpness(img) 
            sharp = sharpness.enhance(10.0)
            newimg = sharp
            contrast = ImageEnhance.Contrast(newimg)
            cont = contrast.enhance(2.3)
            head, tail = os.path.split(fullpath)
            cont.save(f + "_edited.jpg")

teste()

所以经过一些研究后,我尝试将完整路径拆分为头部和尾部。 tail 变量为我获取文件名。

我这样做了,所以每次循环时,它都可以保存到我的新文件夹 + 尾部的文件路径中。

所以我尝试了这个:

def sha():
    for item in dirs:
        fullpath = os.path.join(path,item)
        if os.path.isfile(fullpath):
            img = Image.open(fullpath) 
            #f, e = os.path.splitext(fullpath) #don't need this here
            sharpness = ImageEnhance.Sharpness(img) 
            sharp = sharpness.enhance(10.0)
            newimg = sharp
            contrast = ImageEnhance.Contrast(newimg)
            cont = contrast.enhance(2.3)
            head, tail = os.path.split(fullpath)
            cont.save("C:\\Users\\r o d r i g o\\Desktop\\001 - progamer\\98 - Image brightness\\test\\novo" + tail)
            print("this is the filepath: " + head)
            print("this is the filename: " + tail)

sha()

我认为这可行,但它将文件保存在同一目录中,如 novoDJI_001.jpg、novoDJI_002.jpg 等。

如果有帮助,我添加了几张图片:

Saving in the same folderTrying to save on a new folder

所以,在我的第二次尝试中(更像是第 20 次但很好),如您所见,我对文件路径进行了惰性化,但 \test\novo 中名为 novo 的新文件夹最终出现在文件名中。

非常感谢任何帮助,我确信这很简单,但我在过去的 5 个小时里都在做这个,但我找不到它为什么会这样!谢谢!

【问题讨论】:

    标签: python path operating-system python-imaging-library


    【解决方案1】:

    “novo”和tail之间的这一行没有路径分隔符:

    cont.save("C:\\Users\\r o d r i g o\\Desktop\\001 - progamer\\98 - Image brightness\\test\\novo" + tail)
    

    请用以下内容替换它:

    cont.save("C:\\Users\\r o d r i g o\\Desktop\\001 - progamer\\98 - Image brightness\\test\\novo\\" + tail)    // '\\' added after 'novo'
    

    或者你也可以使用它:

    new_name = os.path.join( head, "novo", tail )
    cont.save( new_name )
    

    【讨论】:

    • 这成功了!非常感谢,这是我第一次设法自动化一些有用的东西,我最终使用了:new_name = os.path.join(head, "novo", tail) cont.save(new_name) 有了这个,我可以把所有的文件夹中的新文件并带有我想要的后缀。再次感谢
    • 不客气!如果您觉得答案有用,您可以投票和/或接受它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多