如何使用"/"(目录分隔符)在Linux和Windows在Python?

我用python写了一个代码,使用/在文件夹中创建一个特定的文件,如果我想在windows中使用这些代码,它将不起作用,有没有一种方法可以让我在windows和Linux中使用这些代码。

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

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

当我将使用我的代码在假设windows机器我的代码将无法工作。

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

238319 次浏览

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

一些有用的链接将帮助你:

你可以使用os.sep:

>>> import os
>>> os.sep
'/'

使用:

import os
print os.sep

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

import os
path = os.path.join('folder_name', 'file_name')
< p > os.path.join()使用。 例子:os.path.join(pathfile,"output","log.txt")。< / p >

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

不要自己构建目录和文件名,使用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)

还应该提到os.path.normpath(pathname),因为它将Windows上的/路径分隔符转换为\分隔符。它还崩溃了冗余的高层引用…例如,A/BA/foo/../BA/./B都变成了A/B。如果你是Windows,这些都变成A\B

如果你足够幸运地运行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

你可以使用"os.sep "

 import os
pathfile=os.path.dirname(templateFile)
directory = str(pathfile)+os.sep+'output'+os.sep+'log.txt'
rootTree.write(directory)

我使用pathlib来处理大多数事情,所以我喜欢:pathlib.os.sep

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

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

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

  1. 我现在使用的是python 3.9。所以在那个版本中,我们有操作系统模块来处理这样的任务。因此,为了获取父目录::
parent_dir = os.path.pardir
  1. 不硬编码文件路径分隔符(/或\)是一个很好的编码实践。相反,使用上述操作系统模块提供的依赖于操作系统的机制。它使你的代码可用于其他目的/人。它是这样的(只是一个例子)::

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

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

输出:

. . \跑龙套\ properties.ini

你当然可以在这里查看整个文档: https://docs.python.org/3/library/os.html