[英]for loops getting skipped + define function to re-use string splitting
我正在开发一个简单的程序,它获取文件名列表并将其转换为导入文件 (.impex)。 导入文件包含三个部分,每个部分都需要自己的标题。 将标题打印到输出文件后,我使用 for 循环遍历文件名列表并从中提取必要的信息以生成导入条目行。
输入包含文件名的 .csv,例如:
3006419_3006420_ENG_FRONT.jpg
所需的输出 .impex 文件格式如下:
header-1 line-1
header-1 line-2
header-1 line-3
;E3006419_3006420_FRONT_Image_Container;
header-2 line-1
;3006419_3006420D_ENG_FRONT-92x92;cloudfronturl;3006419_3006420D_ENG_FRONT.jpg;image/jpg;;;100Wx100H;E3006419_3006420_FRONT_Image_Container
header-3 line-1
;3006420;E3006419_3006420_FRONT_Image_Container
这是我的代码:
file = open(sys.argv[1])
output = open('output.impex','w+') #define our output impex file
#write variables and header for media container creation
output.write('{}\n{}\n{}\n'.format('header-1 line-1','header-1 line-2','header-1 line-3'))
#write media container creation impex rows
for line in file:
nameAndExtension = line.split('.')
name = nameAndExtension[0]
extension = nameAndExtension[1]
elements = name.split('_')
parentSKU = elements[0]
childSKU = elements[1]
lang = elements[2]
angle = elements[3]
output.write(";E" + parentSKU + "_" + childSKU + "_" + angle + '_Image_Container;\n')
#write header for media creation
output.write('{}\n'.format('header-2 line-1'))
#write media creation impex rows
for line in file:
nameAndExtension = line.split('.')
name = nameAndExtension[0]
extension = nameAndExtension[1]
elements = name.split('_')
parentSKU = elements[0]
childSKU = elements[1]
lang = elements[2]
angle = elements[3]
output.write('{}\n'.format(';' + name + '-92x92;https://' + cloudfront + '.cloudfront.net/92x92/product-images/ACTIVE-HYBRIS/' + line + ';' + line + ';image/' + extension + ';;100Wx100H'))
#write header for product association
output.write('{}\n'.format('header-3 line-1'))
for line in file:
nameAndExtension = line.split('.')
name = nameAndExtension[0]
extension = nameAndExtension[1]
elements = name.split('_')
parentSKU = elements[0]
childSKU = elements[1]
lang = elements[2]
angle = elements[3]
output.write(childSKU + ";E" + parentSKU + "_" + childSKU + "_" + angle + '_Image_Container;\n')
我的输出如下所示:
header-1 line-1
header-1 line-2
header-1 line-3
;E3006419_3006420_FRONT_Image_Container;
;E3006419_3006421_FRONT_Image_Container;
;E3006419_3006422_FRONT_Image_Container;
;E3006419_3006423_FRONT_Image_Container;
;E3006419_3006424_FRONT_Image_Container;
header-2 line-1
header-3 line-1
所以你可以看到它正确地执行了第一个 for 循环,但没有为第二个或第三个 for 循环编写任何内容。 而且我知道使用干净的功能可以做得更好。
只需更改每个for
循环以预先打开文件:
file = open(sys.argv[1])
for line in file:
nameAndExtension = line.split('.')
# etc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.