我想創建一個文本文件並逐行添加數據。如果文件中已經存在數據行,則應該忽略它。否則,它應該被追加到文件中。如何同時訪問文件以添加/編輯/刪除數據?
回答
我做到了這樣,
def retrieveFileData():
"""Retrieve Location/Upstream data from files"""
lines = set()
for line in open(LOCATION_FILE):
lines.add(line.strip())
return lines
def add_line(line):
"""Add new entry to file"""
f = open(LOCATION_FILE, 'a')
lines = retrieveFileData()
print lines
if line not in lines:
f.write(line + '\n')
lines.add(line)
f.close()
else:
print "entry already exists"
if __name__ == "__main__":
while True:
line = raw_input("Enter line manually: ")
add_line(line)
if line == 'quit':
break
當你修改我的代碼時,你忘了確保文件在它打開的代碼路徑中被關閉。你應該使用'with'語句,或者將'f.close()'移動到'add_line的末尾' –
你幾乎肯定會更好地閱讀該文件並編寫新的更改版本。在大多數情況下,它會更快,更容易,更少出錯並且更具可擴展性。
感謝Martin,有人可以通過代碼示例來解釋我,最好是在python中使用線程嗎?這是網絡文件和大量用戶同時訪問。具有多個用戶的 – pradeekrathnayaka
對同一個文件的寫入操作很棘手,應該避免。所有的庫都寫入相同文件的末尾(請參閱日誌記錄)。但是,如果你都改變同一個文件 - 想想更好的解決方案 –
使用一些更合適的數據結構,如事務數據庫而不是文件 – wim
如果你的文件不是那麼大,你可能只是做這樣的事情:
added = set()
def add_line(line):
if line not in added:
f = open('myfile.txt', 'a')
f.write(line + '\n')
added.add(line)
f.close()
但是,如果你擔心併發這不是一個好主意,存儲大量數據在文件中,或基本上除了快速和一次性的東西外。
Ther是輸出中返回的錯誤,稱爲「如果行不在集合中: TypeError:'type 'object is not iterable' – pradeekrathnayaka
@ user30412 - 對不起,我的意思是把'added'放在'set'中。現在應該工作。 –
- 1. 編輯模式下的Uitableview:如何同時添加「+」(添加)和「 - 」(刪除)按鈕?
- 2. 如何在Stetho中添加,刪除和編輯數據?
- 3. 如何添加/編輯/刪除MySQL數據庫與jqGrid的
- 4. 如何添加編輯和刪除每個jQuery數據表?
- 5. 如何監視xml文件(添加 - 編輯 - 刪除)節點
- 6. KnockoutJS添加,編輯,刪除
- 7. 刪除,添加,編輯stringList
- 8. 編輯XML文件(刪除節點並添加新文件)
- 9. ms訪問通過訪問表單添加,編輯,刪除項目
- 10. 如何編輯,刪除和添加以下腳本?
- 11. 添加/刪除編輯文本和點擊刪除(X)
- 12. 無需編輯和刪除即可訪問2010表單添加件
- 13. 如何禁用子列表套件添加/編輯/刪除
- 14. 如何添加編輯/刪除/更新按鈕,事件的GridView
- 15. Node.js加載如何刪除\編輯數據的JSON文件中的服務器
- 16. 如何在Golang中添加/編輯文件元數據?
- 17. 編輯,刪除,添加項目到數據網格很容易
- 18. jqGrid的ASP.net C#添加編輯刪除數據庫
- 19. 在Silverlight數據網格中編輯,添加和刪除行?
- 20. 添加編輯和刪除信息從jtable到數據庫
- 21. JTable - 添加,編輯,刪除行
- 22. 添加/刪除/編輯PHP/SQL表格
- 23. 添加記錄,編輯刪除
- 24. UITableView的編輯風格 - 添加/刪除
- 25. 如何使用「添加文件刪除」刪除文件?
- 26. 如何編輯.htaccess文件以在末尾刪除字符串
- 27. 如何添加,編輯或刪除數據存儲中的行/列?
- 28. 如何創建一個快速界面來編輯/刪除/添加數據庫?
- 29. 如何在laravel 4.2中添加數據表中的編輯/刪除按鈕?
- 30. 如何使用codeignitor添加編輯,刪除數據標籤中的列
這聽起來像你需要使用一個數據庫,而不是一個平面文件。如果您可以提供更多細節,我們可以幫助更好。 –
這裏我沒有維護數據庫來處理數據,只使用平面文件。我認爲這個任務是python中的一個簡單腳本,但是在實現這個過程時,這對於處理許多用戶的併發訪問來說有點難度。與此同時,我是Python新手,對python沒有太多經驗。 – pradeekrathnayaka