我在这里和那里找到了一些答案,但我无法确定构建我想要的东西的确切方法。如果您能提供帮助,请提前致谢。Maya/Python - 通过文本文件循环的函数,但某些行除外
我有多个文本文件,都是以相同的方式构建的,但每个文件都有不同的信息。我想遍历每个文件并逐行返回相应的信息。另一方面,我有一些布尔值,用于定义文件中的某一行是否必须跳过。例如:“如果boolean1为true且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),它支持序列化数据类型,如字典和列表?如果你能提供你需要阅读的文件的前几行的例子,我认为它会有很大的帮助。最后,只要文件不是非常大,将所有数据合并到一个结构中,然后提取所需内容可能更有意义。 – chadrik