在 Python 中为现有文件添加一行

新手上路,请多包涵

我需要在文本文件的第一行添加一行,看起来我唯一可用的选项是比我对 python 期望的更多的代码行。是这样的:

 f = open('filename','r')
temp = f.read()
f.close()

f = open('filename', 'w')
f.write("#testfirstline")

f.write(temp)
f.close()

没有更简单的方法吗?此外,与打开单个句柄进行读写 (‘r+’) 相比,我更经常看到这个双句柄示例 - 这是为什么?

原文由 Nick 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 645
2 个回答

Python 使很多事情变得简单,并包含许多常见操作的库和包装器,但目标不是隐藏基本事实。

您在这里遇到的基本事实是,您通常不能在不重写整个结构的情况下将数据添加到现有的平面结构中。这与语言无关。

有一些方法可以保存文件句柄或降低代码的可读性,其他答案中提供了其中许多方法,但都没有改变基本操作:您必须读入现有文件,然后写出要添加的数据,然后您读入的现有数据。

一定要为自己保存文件句柄,但不要试图将此操作打包到尽可能少的代码行中。事实上,永远不要去寻找最少的代码行——那是混淆,而不是编程。

原文由 Nicholas Knight 发布,翻译遵循 CC BY-SA 2.5 许可协议

我会坚持单独的读取和写入,但我们当然可以更简洁地表达每一个:

蟒蛇2:

 with file('filename', 'r') as original: data = original.read()
with file('filename', 'w') as modified: modified.write("new first line\n" + data)

蟒蛇3:

 with open('filename', 'r') as original: data = original.read()
with open('filename', 'w') as modified: modified.write("new first line\n" + data)

注意:file() 函数在 python3 中不可用。

原文由 Karl Knechtel 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题