2016-02-12 150 views
2

第一次在這裏問一個問題,但非常難倒,可以用一隻手做。我是否正確使用file.seek和file.tell?

因此,我正在爲涉及論證的項目在Python中編寫程序。這個腳本總的來說需要從json文件中取出一些節點,然後決定參數的線性順序,並按順序將它正確地放入樹中。但是,我在這裏遇到的主要問題是非常基本的。如果「nodeInt」等於「nodeIdentifier」,我需要將行讀取器移回一行,以便從前一行(fromID)讀取值。我已經強調了這些使用的地方(一個「尋求」,兩個「告訴」)

不幸的是,目前它只是閱讀相同的一行,似乎沒有像我認爲應該回來的那樣。我是否錯誤地使用了這些命令或者是否有其他錯誤?提前致謝。

while addingToList == False: 
    if "toID" in line: 
     print "finding id" 
     print line 
     #Finding the ID 
     idStart = line.index(":") 
     nodeID = line[idStart+1:idStart+3] 
     nodeInt = int(nodeID) 
     if nodeInt == nodeIdentifier: 
      print "matching id" 
      **input.seek(last_pos)** 
      line = input.readline() 
      print line 
      fromStart = line.index(":") 
      fromID = line[fromStart+1:fromStart+3] 
      fromInt = int(fromID) 
      print "FromID" 
      print fromInt 
      line = input.readline() 
      line = input.readline() 
     else: 
      **last_pos = input.tell()** 
      line = input.readline() 
    elif "schemefulfillments" in line: 
     print "reached end" 
     addingToList = True  

    else: 
     **last_pos = input.tell()** 
     line = input.readline() 

回答

0

首先,我不知道,如果你剛剛不包括它,或者如果它實際上是不存在的,但是你錯過了last_pos聲明你使用它作爲seek指標之前。 檢查出the docs關於使用seektell以及;它應該在這裏很有幫助。

+0

是的,直到else才使用它,因爲else總是出現在「if」語句之前。我會看看,謝謝 – SneakySpriggs