【问题标题】:When to use `/` and when to use `\` in regards to path Python何时使用 `/` 以及何时使用 `\` 来处理 Python 路径
【发布时间】:2018-03-15 00:21:29
【问题描述】:

我对 Python 中使用 os 模块的路径有几个问题:

(1) 如果使用os 模块,\/ 在文件的绝对路径方面有什么区别吗?

例如:

import os 
example_path_1 = "C:\abc\def"
example_path_2 = "C:/abc/def"

一个。 os.system(example_path_1)os.system(example_path_2) 都可以工作吗?

b. os.mkdir(example_path_1)os.mkdir(example_path_2) 都可以吗?

(2) 在 Python 中使用os 模块时,如果我没弄错的话,似乎在某些情况下我们必须使用/,而在其他情况下我们必须使用\。怎么区分?

【问题讨论】:

  • 没有。在所有情况下,您都应该使用 /。在 Windows 上,\ 也可以,但你会遇到麻烦,因为它也是转义字符。
  • 您可以使用os.path.sep,这将为您提供适合当前平台的角色。
  • 你尝试的时候发生了什么?
  • @Goyo 有时会成功,但有时不会。这就是为什么我真的对使用什么感到困惑......而且有时我看到一些代码在路径前面带有r,但我真的不明白为什么要放那个?
  • @ryan9025 使用操作系统中定义的路径分隔符(但要正确使用)。跨平台代码使用os.path.sep

标签: python cmd path operating-system


【解决方案1】:

始终坚持使用正斜杠会很安全

example_path = "/c/abc/def"

如果你使用windows风格,你需要对它们进行转义或者使用原始字符串

example_path = "C:\\abc\\def"
example_path = r"C:\abc\def"

一般来说,坚持在os.path 模块中做尽可能多的事情,它会相当稳健地处理这些特定于操作系统的问题。例如,您可以将路径传递给os.path.normpath,它会将您的斜线标准化为您所在的任何平台。同样,使用os.path.join 构建路径将为您的系统插入正确的斜线。

【讨论】:

  • 我是新手,很抱歉,我有点不明白为什么您的 example_path 缺少 C:?您能否提供一个示例,如果我想在 Windows 中将目录/创建新目录更改为 C:\abc\def(或者在更复杂的情况下),那么最安全的方法是什么?谢谢!
  • @ryan9025 第一个版本是“unix 风格”的路径,第二个是“windows 风格”的路径,但是python 可以在windows 系统上使用unix 风格的路径。
  • 谢谢!那么这意味着在这两种情况下os.path 将始终有效?
猜你喜欢
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
  • 2013-11-28
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 2016-10-14
  • 2012-03-13
相关资源
最近更新 更多