簡體   English   中英

for 循環被跳過 + 定義函數以重用字符串拆分

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM