【问题标题】:How to write to a directory os agnostic?如何写入与操作系统无关的目录?
【发布时间】:2020-12-16 16:28:58
【问题描述】:

我正在 Windows 机器上开发一些将在 Linux 环境中运行的代码。我知道 Linux 中文件的路径是我需要写入的 /tmp/。此问题的公认答案不适用于 Windows:Platform-independent file paths?

当我尝试open(path.join('tmp', 'fileToOpen.txt'), 'w') 时,我得到“FileNotFoundError: [Error 2] No such file or directory: 'tmp\fileToWrite.txt'”

如何解决?

【问题讨论】:

  • 你最好使用pathlib而不是os.path
  • 为此使用pathlib。另外,tmp 不存在于 Windows 上吗?您可以尝试使用tempfile 模块。
  • @jakub 它不存在,但我创建了一个 C:\tmp\ 用于测试目的。

标签: python


【解决方案1】:

正如@Tomerikoo 和@jakub 指出的那样,您想在Python 中使用pathlibtempfile 模块:

你最终会得到类似的东西:

open(PurePath(gettempdir(), 'fileToOpen.txt'), 'w')

【讨论】:

  • 当我使用 tempfile.gettempdir() 时,它返回 C:\Users\username\AppData\Local\Temp。不过,我已经在 C:\tmp\ 为我的开发创建了一个文件。
  • 那么您还没有将您的操作系统配置为将其用作临时目录的文件。你不可能既希望操作系统做出决定,又希望自己有发言权。
  • @tripleee 我希望能够写入目录 C:\tmp\ 而与操作系统无关。我意识到在定义临时目录时有一些操作系统元素在起作用,但不仅仅是一种不可知的方式来写入目录吗?
  • 半不可知地将目录名称放在环境变量中并使用os.environ["TMPDIR"] 或其他。 (这是 U*x 系统上的标准系统变量,但不知道 Windows ......感谢上帝)。
  • 为什么@Michael?为什么不直接使用操作系统的正确临时存储位置?
猜你喜欢
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多