python入门文件读取与写入_初学者Python:读取和写入同一文件
每個打開的文件都有一個隱式指針,該指針指示將在何處讀取和寫入數(shù)據(jù)。通常,它默認為文件的開頭,但是如果您使用a(追加)模式,則默認為文件的結尾。還值得注意的是,w即使您添加+到該模式,該模式也會截斷您的文件(即刪除所有內容)。
每當您讀取或寫入N個字符時,讀/寫指針都會在文件中向前移動該數(shù)量。我發(fā)現(xiàn),如果您記得那些,可以將其像舊的盒式磁帶一樣思考。因此,如果執(zhí)行以下代碼:
fd = open("testfile.txt", "w+")
fd.write("This is a test file.\n")
fd.close()
fd = open("testfile.txt", "r+")
print fd.read(4)
fd.write(" IS")
fd.close()
...它應該最終打印This,然后將文件內容保留為This IS a test file.。這是因為首字母read(4)返回文件的前4個字符,因為指針位于文件的開頭。它將指針留在緊隨其后的空格字符處This,因此以下代碼write(" IS")用空格(與已有的空格相同)覆蓋接下來的三個字符,然后IS替換現(xiàn)有的is。
您可以使用seek()文件的方法跳到特定點。在上面的示例之后,如果執(zhí)行以下操作:
fd = open("testfile.txt", "r+")
fd.seek(10)
fd.write("TEST")
fd.close()
...然后您會發(fā)現(xiàn)該文件現(xiàn)在包含This IS a TEST file.。
所有這一切都適用于Unix系統(tǒng),并且可以測試這些例子,以確保。但是,我有混合的問題read(),并write()在Windows系統(tǒng)上。例如,當我在Windows機器上執(zhí)行該第一個示例時,它可以正確打印This,但是之后再檢查該文件時,該文件將write()被完全忽略。但是,第二個示例(使用seek())在Windows上似乎可以正常工作。
總而言之,如果您想在Windows中從文件的中間進行讀取/寫入,建議您始終使用顯式seek()而不是依賴于讀取/寫入指針的位置。如果您只做讀或寫操作,那就很安全了。
最后一點-如果您將Windows上的路徑指定為文字字符串,請記住轉義反斜杠:
fd = open("C:\\Users\\johndoe\\Desktop\\testfile.txt", "r+")
或者,您可以通過r在開始處使用來使用原始字符串:
fd = open(r"C:\Users\johndoe\Desktop\testfile.txt", "r+")
或最可移植的選擇是使用os.path.join():
fd = open(os.path.join("C:\\", "Users", "johndoe", "Desktop", "testfile.txt"), "r+")
您可以在官方Python文檔中找到有關文件IO的更多信息。
總結
以上是生活随笔為你收集整理的python入门文件读取与写入_初学者Python:读取和写入同一文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Timer组件的使用
- 下一篇: python用语句输入一个3*3的二维矩