227

我在 python 中编写了一个代码,它使用 / 在文件夹中创建特定文件,如果我想在 Windows 中使用该代码,它将无法工作,有没有办法可以在 Windows 和 Linux 中使用该代码。

在 python 中,我使用以下代码:

pathfile=os.path.dirname(templateFile)
rootTree.write(''+pathfile+'/output/log.txt')

当我将在假设 Windows 机器中使用我的代码时,我的代码将不起作用。

如何在 Linux 和 Windows 中使用“/”(目录分隔符)?

4

11 回答 11

307

使用os.path.join(). 示例:os.path.join(pathfile,"output","log.txt")

在您的代码中,这将是:rootTree.write(os.path.join(pathfile,"output","log.txt"))

于 2013-04-15T08:48:03.970 回答
134

采用:

import os
print os.sep

查看分隔符在当前操作系统上的外观。
在您的代码中,您可以使用:

import os
path = os.path.join('folder_name', 'file_name')
于 2013-04-15T08:47:19.867 回答
74

您可以使用os.sep

>>> import os
>>> os.sep
'/'
于 2013-04-15T08:45:32.450 回答
58

os.path.normpath(pathname)还应该提到它,因为它将/路径分隔符转换为\Windows 上的分隔符。它还折叠了多余的上层引用......即,并且A/B全部变为. 如果你是 Windows,这些都变成.A/foo/../BA/./BA/BA\B

于 2016-08-12T17:41:23.617 回答
24

如果你有幸运行 Python 3.4+,你可以使用pathlib

from pathlib import Path

path = Path(dir, subdir, filename)  # returns a path of the system's path flavour

或者,等效地,

path = Path(dir) / subdir / filename
于 2017-05-25T20:52:38.463 回答
18

一些有用的链接可以帮助您:

于 2013-04-15T08:44:53.890 回答
12

做一个import os然后使用os.sep

于 2013-04-15T08:44:37.567 回答
9

您可以使用“ os.sep

 import os
 pathfile=os.path.dirname(templateFile)
 directory = str(pathfile)+os.sep+'output'+os.sep+'log.txt'
 rootTree.write(directory)
于 2018-05-25T06:40:21.473 回答
5

不要自己构建目录和文件名,使用 python 包含的库。

在这种情况下,相关的是os.path。特别是 join 它从目录和文件名或目录创建新路径名,并 split 从完整路径中获取文件名。

你的例子是

pathfile=os.path.dirname(templateFile)
p = os.path.join(pathfile, 'output')
p = os.path.join( p, 'log.txt')
rootTree.write(p)
于 2013-04-15T08:49:49.550 回答
2

如果有人正在寻找这样的东西::

他/她想知道父目录,然后转到子文件夹,然后可能转到特定文件。如果是这样,我使用以下方法。

  1. 到目前为止,我正在使用 python 3.9。所以在那个版本中,我们有os模块来处理这些任务。所以,为了获取父目录::
parent_dir = os.path.pardir
  1. 不对文件路径分隔符(/ 或 \)进行硬编码是一种很好的编码习惯。而是使用上述os模块提供的操作系统依赖机制。它使您的代码非常可重用于其他目的/人。它是这样的(只是一个例子)::

path = os.path.pardir + os.sep + 'utils' + os.sep + 'properties.ini'

print(f'The path to my global properties file is :: {path}')

输出 ::

..\utils\properties.ini

您肯定可以在这里查看整个文档: https ://docs.python.org/3/library/os.html

于 2021-05-29T11:48:04.943 回答
0

pathlib用于大多数事情,所以我喜欢:pathlib.os.sep.

pathlib如果您不需要,通常是更好的选择os

于 2021-05-18T11:55:00.670 回答