如何在 Python 中的 Linux 和 Windows 中使用“/”(目录分隔符)?
- 2025-04-15 09:19:00
- admin 原创
- 22
问题描述:
我用 python 编写了一个代码,它使用 / 在文件夹中创建一个特定的文件,如果我想在 Windows 中使用该代码,它将无法工作,有没有办法可以在 Windows 和 Linux 中使用该代码。
在 python 中我使用这个代码:
pathfile=os.path.dirname(templateFile)
rootTree.write(''+pathfile+'/output/log.txt')
当我在假设的 Windows 机器上使用我的代码时,我的代码将无法运行。
如何在 Linux 和 Windows 中使用“/”(目录分隔符)?
解决方案 1:
使用os.path.join()
. 例如:os.path.join(pathfile,"output","log.txt")
。
在您的代码中将是:rootTree.write(os.path.join(pathfile,"output","log.txt"))
解决方案 2:
使用:
import os
print os.sep
查看分隔符在当前操作系统上的外观。
您可以在代码中使用:
import os
path = os.path.join('folder_name', 'file_name')
解决方案 3:
您可以使用os.sep:
>>> import os
>>> os.sep
'/'
解决方案 4:
os.path.normpath(pathname)
还值得一提的是,它在 Windows 上将/
路径分隔符转换为`分隔符。它还会折叠冗余的上层引用……例如,
A/B和
A/foo/../B和
A/./B都变成了
A/B。如果你使用的是 Windows,这些都会变成
AB`。
解决方案 5:
在 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
当您将路径转换回字符串时,它将使用本机路径分隔符(例如 Windows 上的反斜杠)。
解决方案 6:
一些有用的链接可以帮到您:
os.sep
os.path
os.pathsep
解决方案 7:
做一个import os
然后使用os.sep
解决方案 8:
您可以使用“ os.sep ”
import os
pathfile=os.path.dirname(templateFile)
directory = str(pathfile)+os.sep+'output'+os.sep+'log.txt'
rootTree.write(directory)
解决方案 9:
不要自己建立目录和文件名,使用 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)
解决方案 10:
如果有人正在寻找这样的东西:
他/她想知道父目录,然后转到子文件夹,甚至转到特定文件。如果是这样,我会使用以下方法。
我目前使用的是 Python 3.9。在这个版本中,我们有os模块来处理这类任务。例如,要获取父目录:
parent_dir = os.path.pardir
良好的编码习惯是不要硬编码文件路径分隔符(/ 或 \)。相反,请使用上述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
解决方案 11:
我用于pathlib
大多数事物,所以我喜欢:pathlib.os.sep
。
pathlib
如果您不需要,通常是更好的选择os
!
扫码咨询,免费领取项目管理大礼包!