如何在Python中保存多个文件?
How to save multiple files in Python?
所以,我写了这个 sript,它接受命令行参数并根据它们生成图像(现在只有一个参数),它工作得很好,直到它到达保存功能,我不知道为什么但它只拍摄最后一张图像并保存 10 次而不是保存每张图像
这是代码;
import os, argparse
from PIL import Image as image
from PIL import ImageDraw as image_draw
from PIL import ImageFont as image_font
parser = argparse.ArgumentParser(description='Image generator')
#Argument definition
parser.add_argument('-num', action='store_true', required=False, help='Generates numbers')
numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
args = parser.parse_args()
arg_num = args.num
def img_gen(n, lenght):
text = n
fnts = 20
fnt = image_font.truetype('Roboto.ttf', size=fnts, index=0, encoding='', layout_engine=None)
gen_i_width = (6 * fnts)
gen_i_height = (3 * fnts)
gen_img = image.new('RGBA', (gen_i_width, gen_i_height), color=(0, 0, 0, 255))
gen_text = image_draw.Draw(gen_img)
gen_text.text((0,0), text, font=fnt, fill=(255, 255, 255, 255))
text_size = gen_text.textsize(text, font=fnt, spacing=0, direction=None, features=None)
text_s_list = list(text_size)
text_width, text_height = text_s_list
img_c = gen_img.crop((0, 0, text_width, text_height))
for file_name in range(1, lenght + 1):
img_c.save(f"{file_name:04d}.png")
def main():
if arg_num == True:
lenght = len(numbers)
for n in numbers:
img_gen(n, lenght)
if __name__ == '__main__':
main()
每次创建图像时,您都会将其保存到多个文件中,并使用序号作为名称。这会在所有文件中每次都覆盖以前的图像。
从 img_gen
函数中删除循环。相反,使用 n
生成的名称保存到一个文件中。然后每一张图片都会存成一个文件,文件名就是图片编号。
所以,改变
for file_name in range(1, lenght + 1):
img_c.save(f"{file_name:04d}.png")
...到...
fnum = int(n)
img_c.save(f"{fnum:04d}.png")
我做一些类似的工作
for i in list:
#GRAPH
plt.savefig("path/{0}/{1}.pdf".format(i,i));
这将保存到名称为 'i' 的文件夹中,文件名为 'i.pdf'
当你有以下条件时:
'{0}_{1}'.format('apple','juice')
输出是
'apple_juice'
所以,我写了这个 sript,它接受命令行参数并根据它们生成图像(现在只有一个参数),它工作得很好,直到它到达保存功能,我不知道为什么但它只拍摄最后一张图像并保存 10 次而不是保存每张图像
这是代码;
import os, argparse
from PIL import Image as image
from PIL import ImageDraw as image_draw
from PIL import ImageFont as image_font
parser = argparse.ArgumentParser(description='Image generator')
#Argument definition
parser.add_argument('-num', action='store_true', required=False, help='Generates numbers')
numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
args = parser.parse_args()
arg_num = args.num
def img_gen(n, lenght):
text = n
fnts = 20
fnt = image_font.truetype('Roboto.ttf', size=fnts, index=0, encoding='', layout_engine=None)
gen_i_width = (6 * fnts)
gen_i_height = (3 * fnts)
gen_img = image.new('RGBA', (gen_i_width, gen_i_height), color=(0, 0, 0, 255))
gen_text = image_draw.Draw(gen_img)
gen_text.text((0,0), text, font=fnt, fill=(255, 255, 255, 255))
text_size = gen_text.textsize(text, font=fnt, spacing=0, direction=None, features=None)
text_s_list = list(text_size)
text_width, text_height = text_s_list
img_c = gen_img.crop((0, 0, text_width, text_height))
for file_name in range(1, lenght + 1):
img_c.save(f"{file_name:04d}.png")
def main():
if arg_num == True:
lenght = len(numbers)
for n in numbers:
img_gen(n, lenght)
if __name__ == '__main__':
main()
每次创建图像时,您都会将其保存到多个文件中,并使用序号作为名称。这会在所有文件中每次都覆盖以前的图像。
从 img_gen
函数中删除循环。相反,使用 n
生成的名称保存到一个文件中。然后每一张图片都会存成一个文件,文件名就是图片编号。
所以,改变
for file_name in range(1, lenght + 1):
img_c.save(f"{file_name:04d}.png")
...到...
fnum = int(n)
img_c.save(f"{fnum:04d}.png")
我做一些类似的工作
for i in list:
#GRAPH
plt.savefig("path/{0}/{1}.pdf".format(i,i));
这将保存到名称为 'i' 的文件夹中,文件名为 'i.pdf'
当你有以下条件时:
'{0}_{1}'.format('apple','juice')
输出是
'apple_juice'