如何使用操作系统将文件保存到新文件夹?

2024-09-23 22:30:18 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我正在使用pythong3.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次尝试),您可以看到我插入了文件路径,但是名为novo的新文件夹,在\test\novo中以文件名结束

任何帮助是非常感谢,我相信这是简单的,但我已经花了过去5个小时在这个,但我不知道为什么它会这样做!谢谢你


Tags: pathtestimage文件夹imgositemtail
1条回答
网友
1楼 · 发布于 2024-09-23 22:30:18

“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 )

相关问题 更多 >