我在這裏和那裏找到了一些答案,但我無法確定構建我想要的東西的確切方法。如果您能提供幫助,請提前致謝。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