python入门文件读取与写入_初学者Python:读取和写入同一文件

每个打开的文件都有一个隐式指针,该指针指示将在何处读取和写入数据。通常,它默认为文件的开头,但是如果您使用a(追加)模式,则默认为文件的结尾。还值得注意的是,w即使您添加+到该模式,该模式也会截断您的文件(即删除所有内容)。

每当您读取或写入N个字符时,读/写指针都会在文件中向前移动该数量。我发现,如果您记得那些,可以将其像旧的盒式磁带一样思考。因此,如果执行以下代码:

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替换现有的is。

您可以使用seek()文件的方法跳到特定点。在上面的示例之后,如果执行以下操作:

fd = open("testfile.txt", "r+")

fd.seek(10)

fd.write("TEST")

fd.close()

...然后您会发现该文件现在包含This IS a TEST file.。

所有这一切都适用于Unix系统,并且可以测试这些例子,以确保。但是,我有混合的问题read(),并write()在Windows系统上。例如,当我在Windows机器上执行该第一个示例时,它可以正确打印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的更多信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值