如何使用OS将文件保存到新文件夹?

时间:2019-11-06 02:03:34

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

我正在尝试创建一个脚本,以更改文件夹中所有图像的对比度和清晰度,并将其另存为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变量为我获取文件名。

我这样做是为了每次循环,它可以保存到我的新文件夹+ 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 folder  和 Trying to save on a new folder

因此,在第二次尝试时(更可能是20),您可以看到我插入了文件路径,但是\ test \ novo中名为novo的新文件夹以文件名结尾。

任何帮助都将不胜感激,我相信这很简单,但是我花了最后5个小时来解决这个问题,但是我找不到原因。谢谢!

1 个答案:

答案 0 :(得分: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 )