[英]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.