2016-01-05 41 views
-2

我有一個腳本這將(除其他事項外):的Python:最簡單和防彈的方式來讀寫小文件

  • 讀取文件的第一行(這是一個十六進制INT)來存儲它在一個可變
  • 讀取,並增加相同文件的第二行(DEC INT)

那麼,什麼是最簡單的方法,不需要將因爲位置等

Alternati我的頭髮真的,我應該以不同的方式組織我的文件嗎?

+1

什麼是問題嗎? – tinySandy

+3

當你說「讀取並增加同一文件的第二行」時,是否包括將其寫回同一個文件?您的文件是文本文件還是二進制文件?如果它是一個文本文件,您能否顯示前兩行數據的樣本?請顯示你寫了什麼代碼來解決這個問題。 –

+0

@Steven Rumbalski 它是你想讓我使用的任何文件(目前是一個文本文件)。該文件可能包含第1行的「0x2227AB」和第2行的「13」。 我需要讀取0x2227AB並將其存儲在一個變量中。 然後讀取13並將其存儲在一個變量中。 然後用14替換13(並在下次打開文件時增加它)並關閉文件。 – Nicolas

回答

0

這可以解決你的問題:

with open(SourceFile, 'r') as file: 
    data = file.readlines() 

print "Your data at line 1" + data[0] 
data[1] = "New line to insert instead of the 2nd line\n" 

with open(SourceFile, 'w') as file: 
    file.writelines(data) 
+0

我不清楚,但通過增加同一個file_的第二行,我的意思是我必須寫一個新的值來代替剛剛讀過的。 – Nicolas

+0

所以你想在第二行之後插入一行? – mid

+0

我想**替換**第二行。 – Nicolas

0
import io 

firstLine = 0x10 
secondLine = 0x20 

print ("create file") 
file = open('test.txt', 'w') 
file.write(hex(firstLine) + '\n') 
file.write(hex(secondLine) + '\n') 
file.flush() 
file.close() 
file2 = open('test.txt', 'r') 
print ("create file done") 

print ("read file") 
first = file2.readline() 
second = file2.readline() 
firstLineOut = int(first,16) 
print ('First: ', hex(firstLineOut)) 
secondLineOut = int(second,16) 
print ('Second: ', hex(secondLineOut)) 
file2.close() 

print ("update file") 
secondLineOut += 1 
print ('Second New: ', hex(secondLineOut)) 
file2 = open('test.txt', 'w') 
file2.write(hex(firstLineOut) + '\n') 
file2.write(hex(secondLineOut) + '\n') 
file2.flush() 
file2.close() 
print ('done') 
1

我沒想到的最好的辦法是重新寫第一行很好,但我可能是錯的。

我試圖的FileInput()(與就地= 1,你可以打印到您的文件),我做了一個爛攤子。

所以,大部分來自@mid的解決方案的啓發,這裏是我的代碼: #在/ usr/bin中/ env的Python的 # - - 編碼:UTF-8 - -

nom = "chambre" 

with open(nom + ".txt", 'r') as file: 
    data = file.readlines() 

remote = int(data[0], 16) 
code = int(data[1]) 
data[1] = str(code + 1) 

print hex(remote) 
print code 

with open(nom + ".txt", 'w') as file: 
    file.writelines(data) 
相關問題