追加模式下的 pathlib 路径 \`write_text\`

新手上路,请多包涵

是否有 python pathlib.Path objects to write_text() 在附加模式下的快捷方式?

The standard open() function has mode="a" to open a file for writing and appending to the file if that file exists, and a Path s .open() 功能似乎具有相同的功能( my_path.open("a") )。

但是方便的 .write_text('..') 快捷方式呢,有没有办法使用 pathlib 打开并附加到文件,只需做与 open() 相同的事情?

为了清楚起见,我可以做

with my_path.open('a') as fp:
    fp.write('my text')

但是还有另一种方法吗?

my_path.write_text('my text', mode='a')

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

阅读 1.2k
2 个回答

并非如此,正如您在 pathlib 模块中看到的那样,存在两种类型的路径类:

  • 纯路径类{PurePath、PurePosixPath、PureWindowsPath}
  • 具体路径类{Path, PosixPath, WindowsPath}。

这些类构造函数的参数仅为 *pathsegments

如果您查看可用的读/写方法(read_text/read_bytes 和 write_text/write_bytes),您还会看到模式也不可用

因此,正如您已经发现的那样,可以将模式与这些 pathlib 类一起使用的唯一方法是使用 open 方法,即:

 with my_path.open("a") as f:
    f.write("...")

这是设计使然,这样 pathlib 类就变得真正“干净”了。此外,上面的代码片段已经是规范的,因此无法进一步简化。您可以在上下文管理器之外使用 open 方法:

 f = my_path.open("a")
f.write("...")

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

pathlib 方法 Path().write_text()Path().write_bytes() 退出时关闭文件连接。

 from pathlib import Path

Path('file.txt').write_text('my text')
Path('file1.txt').write_bytes(b'my text')

Using append mode ie open('a', ...) will instanciate a TextIOWrapper which is also closed by write_text / write_bytes on exit.

 f = Path('file.txt')
f.open("a")
f.write_text('my text')
# or
f.write_bytes(b'my text')

否则必须手动关闭它

f = Path('file1.txt').open('a')
f.write('my text')
f.close()

但可以这样:

 fp = Path('test.txt').open('a')
<_io.TextIOWrapper name='test.txt' mode='a' encoding='UTF-8'>
fp.write('my text')

fq = Path('test1.txt').open('ab', encoding='iso8859-1')
<_io.TextIOWrapper name='test1.txt' mode='a' encoding='iso8859-1'>
fq.write(b'my text')

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

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