У меня есть немного кода, который принимает .csv со списком имен файлов в качестве входных данных, затем разбивает имя файла на его составные части и переупорядочивает их вместе с некоторыми дополнительными символами.
Ввод Пример:
3006419_3006420_ENG_FRONT.jpg
Пример вывода:
;E3006419_3006420_FRONT_Image_Container;
Однако я хотел бы сделать часть для l oop, которая разбивает имя файла на функцию, которую я Можно вызвать в другом месте, так что я могу повторно использовать его в секунду для l oop, который выводит в другом формате. Тем не менее, когда я пытаюсь определить функцию, мне кажется, что у меня ошибка определения области видимости с моими переменными, и я не могу использовать их в своем выражении output.write.
Рабочий код
from csv import reader
import sys
if len(sys.argv) != 2:
print('USAGE ERROR:\nRun like "python <script.py> <input file.csv>"') #error message if code is not run with correct number of arguments
exit()
file = open(sys.argv[1]) #open input file
output = open('output.impex','w+') #define output impex file
for line in file:
nameAndExtension = line.split('.') #split file into filename and file extension
name = nameAndExtension[0]
extension = nameAndExtension[1].replace('\n','') #save file extension as variable extension and remove \n
elements = name.split('_') #split filename into constituent elements. Filenames are formatted as PARENTSKU_CHILDSKU_LANG_ANGLE.extension, eg '3006419_3006420_ENG_FRONT.jpg'
parentSKU = elements[0]
childSKU = elements[1]
lang = elements[2]
angle = elements[3]
output.write(";E" + parentSKU + "_" + childSKU + "_" + angle + '_Image_Container;\n')
нерабочий код:
from csv import reader
import sys
if len(sys.argv) != 2:
print('USAGE ERROR:\nRun like "python <script.py> <input file.csv>"') #error message if code is not run with correct number of arguments
exit()
file = open(sys.argv[1]) #open input file
output = open('output.impex','w+') #define output impex file
def lineSplitting(x):
nameAndExtension = x.split('.') #split file into filename and file extension
name = nameAndExtension[0]
extension = nameAndExtension[1].replace('\n','') #save file extension as variable extension and remove \n
elements = name.split('_') #split filename into constituent elements. Filenames are formatted as PARENTSKU_CHILDSKU_LANG_ANGLE.extension, eg '3006419_3006420_ENG_FRONT.jpg'
parentSKU = elements[0]
childSKU = elements[1]
lang = elements[2]
angle = elements[3]
for line in file:
lineSplitting(line)
output.write(";E" + parentSKU + "_" + childSKU + "_" + angle + '_Image_Container;\n')
Я получаю «NameError: имя« parentSKU »не определено» I думаю из-за область видимости переменной - но я не знаю, что мне нужно сделать, чтобы переменную можно было повторно использовать в for-l oop. Что мне нужно сделать, чтобы все это разбиение и определение переменной превратились в функцию?