Я нашел несколько вариантов ответов здесь и там, но я не могу точно определить, как построить то, что я хочу. Спасибо вам заранее, если вы можете помочь.Maya/Python - функция, которая пеет хотя текстовый файл, за исключением некоторых строк
У меня есть несколько текстовых файлов, все они построены одинаково, но с различной информацией в каждом из них. Я хотел бы перебрать каждый файл и возвращать информацию в нем по строкам. С другой стороны, у меня есть некоторые логические значения, которые определяют, нужно ли пропускать одну конкретную строку в файле или нет. Например: «если boolean1 истинно и lineInTheCorrespondingFile = 40, то пропустите эту строку, иначе прочитайте, но пропустите строки 36 и 37 вместо«.
Дело в том, я не знаю, как действовать для функции знает, какой файл открывается и которой линия читается и если он должен пропустить его или нет. Зная, что мне нужно, чтобы каждая строка возвращалась независимо в конце функции.
И вот мой код до сих пор:
def locatorsDatas (self):
preset = cmds.optionMenu ("presetMenu", q = 1, v = 1)
rawFile = presetsDir + preset.lower() + ".txt"
with open(rawFile) as file:
file.seek (0)
for lineNum, line in enumerate(file, start = 1):
if lineNum > 8 : # Skip header
locator = eval (line)
locName = locator[0]
xVal = locator[1]
yVal = locator[2]
zVal = locator[3]
locScale = locator[4]
locColor = locator[5]
if locator == "":
break
return (locName, xVal, yVal, zVal, locScale, locColor)
Я не знаю, какие ценности я должен передать в функцию, чтобы сделать его пропустить строки, я хочу, зная, что я не могу писать напрямую в него, поскольку каждый файл не разбивается на одни и те же строки. О, и он возвращает только одну строку файла, а не отдельно.
Надеюсь, что это ясно, и вы можете мне помочь, еще раз спасибо.
Итак, у вас есть текстовый файл, который вы хотите прочитать в некоторых строках, а не в других? И строки, которые вы хотите прочитать, вы хотите вернуть информацию из нее? Кстати, вы должны быть очень осторожны, используя функцию eval() для чего-то подобного. – enigma
Во-первых, это не вопрос, связанный с майей, поэтому вы, скорее всего, получите больше помощи, если просто удалите ссылки на него. Просто сделайте 'rawFile' аргумент' locatorsData' и вырежьте вызовы модуля 'cmds'. – chadrik
Кроме того, похоже, что макет ваших данных является основным источником осложнений. У вас есть контроль над написанием файлов? Можете ли вы использовать [json] (https://docs.python.org/2/library/json.html) или [pickle] (https://docs.python.org/2/library/pickle.html), который поддерживает сериализацию типов данных, таких как dicts и list? Я думаю, что это очень помогло бы, если бы вы могли привести примеры первых нескольких строк файлов, которые вам нужно прочитать. Наконец, до тех пор, пока файлы не будут чрезвычайно большими, может возникнуть больше смысла объединить все данные в одну структуру, а затем извлечь все, что вам нужно. – chadrik