【问题标题】:How to loop through folder, containing subfolders to change jpgs to tiffs如何遍历文件夹,包含子文件夹以将 jpgs 更改为 tiffs
【发布时间】:2019-05-15 03:29:12
【问题描述】:

我有文件夹(河流范围,例如 W&S_River),其中包含子文件夹(每个砾石条一个,例如 GravelBar_18),其中包含图像(每个砾石条 50 - 300 个)。我正在尝试将图像从 jpg 转换为 tiff。我有一些代码可以进行转换,但它需要一些时间并且不会遍历目录文件夹(河流到达)。我希望定义到达文件夹并有一些代码可以打开每个子文件夹并转换每个子文件夹。

根据我在此处阅读的内容,我一直在尝试使用 os.walk。我没有收到任何错误消息,但它实际上并没有做任何事情。以下是我目前用于更新每个子文件夹中的图像的内容。

import os
import os.path
from PIL import Image
import glob

os.chdir('E:/W&S_River/GravelBar_18')

for infile in glob.glob("*.jpg"):
    file, ext = os.path.splitext(infile)
    im = Image.open(infile)
    im.save(file+".tiff", 'TIFF')

print("done")

【问题讨论】:

  • 请展示你的 os.walk 尝试
  • 您打印了infile 吗? glob 不是递归的,它可以是,但不像你正在尝试的那样
  • 您必须使用 Windows 吗?如果您可以运行 Linux,您可以在不编写任何 Python 的情况下并行转换它们,只需使用 GNU ParallelImageMagick

标签: python image loops


【解决方案1】:
for infile in glob.glob("/*/*.jpg"): # "/*" is important
     ...
#https://stackoverflow.com/a/36426997/11343720

#https://docs.python.org/3/library/glob.html#glob.glob
# ../../Tools/*/*.gif

import os
import os.path
from PIL import Image
import glob

def jpgToTIFF(folder):
    os.chdir(folder)

    for infile in glob.glob("*.jpg"):
        file, ext = os.path.splitext(infile)
        im = Image.open(infile)
        im.save(file+".tiff", 'TIFF')

subfolders = [f.path for f in os.scandir('f:/work_rpi') if f.is_dir() ]
for foler in subfolders:
    print(foler)
    jpgToTIFF(folder)

https://stackoverflow.com/a/40347279/11343720

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多