Crediblock Ответов: 2

Создайте программу Python для изменения файлов в каталоге


Цель состоит в том, чтобы иметь программу Python, которая изменяет группу изображений, печатая на них текст из пользовательской формы. Я сделал это с одним изображением и отлично работает! Однако я борюсь с использованием для и создание имен файлов, пронумерованных как 1,2,3. в качестве суффикса. Программа должна изменить все файлы (изображения) в папке 1 и вывести результат в папку 2. То, что я сделал до сих пор, находится ниже:

(Потерпите, я опытный разработчик, изучающий Python во время ведения бизнеса - спасибо)

Что я уже пробовал:

#Begin
#Written by Crediblock.com LLC 
#Session Info
# Function to display hostname and 
# IP address 

  
# Driver code 
#Function call 
#Display IP 
#Log IP to file 
#Create session ID
# import required classes
 
from PIL import Image, ImageDraw, ImageFont
import glob 
import os

path1 = "bm1"
path2 = "bm1-output"
# import form data

message1 = "Message" 
 
# create Image object with the input image
 
# image = Image.open('background1.jpg')
image_list = []
for filename in glob.glob('bm1/*.jpg'): 
	im=Image.open(filename)
	image_list.append(im)
# initialise the drawing context with
# the image object as background
 
	draw = ImageDraw.Draw(image_list)

# create font object with the font file and specify
# desired size
 
	font = ImageFont.truetype('Roboto-Bold.ttf', size=45)
 
# starting position of the message
 
	(x, y) = (50, 50)
	message = message1
	color = 'rgb(0, 0, 0)' # black color
 
# draw the message on the background
 
	draw.text((x, y), message, fill=color, font=font)
	(x, y) = (150, 150)
	name = 'THINK'
	color = 'rgb(255, 255, 255)' # white color
	draw.text((x, y), name, fill=color, font=font)
 
# save the edited image
for i in range(10):
     image_list.save('filenames_%d\r\n"%(i+1).jpg')
 
# image_list.save('background_b2.jpg')

# optional optimization 	image.save('optimized.png', optimize=True, quality=20) 

2 Ответов

Рейтинг:
1

Richard MacCutchan

Сначала вам нужно использовать os.listdir (видеть os — разные интерфейсы операционной системы — документация Python 3.7.5rc1[^]) , чтобы получить список имен файлов в исходном каталоге. Затем можно использовать оператор for, чтобы получить каждое имя по очереди и передать его в качестве параметра функции, которая изменяет содержимое, а затем записать его в целевой каталог.


Рейтинг:
0

Visweswaran N

Эти три библиотеки, которые входят в состав python, значительно облегчают вашу работу. Я сделал скелет кода для вашей любезной справки.

# SWAMI KARUPPASWAMI THUNNAI

import glob
import os
import shutil


files_in_folder_one = glob.glob("original images/*.*")
folder_two = "modified images"
for file in files_in_folder_one:
    print("File Location: ", file)
    print("File Name: ", os.path.split(file)[-1])
    # Do something file -> contains file location and the latter contains file name
    # Prepend some value for example
    new_file_name = "Modified " + os.path.split(file)[-1]
    new_file_location = os.path.join(folder_two, new_file_name)
    print("New file location: ", new_file_location)
    shutil.copyfile(file, new_file_location)