使用“/”,“\”进行独立于平台的路径连接?

2024-09-29 00:14:09 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,我有变量base_dirfilename。我想连接它们以获得fullpath。但在windows下,我应该使用\和POSIX /

fullpath = "%s/%s" % ( base_dir, filename ) # for Linux

如何使it平台独立?


Tags: forbaselinuxwindowsdirit平台filename
3条回答

使用^{}

import os
fullpath = os.path.join(base_dir, filename)

os.path模块包含独立于平台的路径操作所需的所有方法,但如果需要知道当前平台上的路径分隔符是什么,则可以使用^{}

你想用os.path.join()来做这个。

使用这种方法而不是字符串连接等的优点是它知道各种特定于操作系统的问题,例如路径分隔符。示例:

import os

在Windows 7下:

base_dir = r'c:\bla\bing'
filename = r'data.txt'

os.path.join(base_dir, filename)
'c:\\bla\\bing\\data.txt'

在Linux下:

base_dir = '/bla/bing'
filename = 'data.txt'

os.path.join(base_dir, filename)
'/bla/bing/data.txt'

os模块包含许多用于目录、路径操作和查找操作系统特定信息的有用方法,例如通过os.sep在路径中使用的分隔符

在这里挖掘一个旧问题,但是在Python 3.4+上可以使用pathlib operators

from pathlib import Path

# evaluates to ./src/cool-code/coolest-code.py on Mac
concatenated_path = Path("./src") / "cool-code\\coolest-code.py"

如果您有幸运行最新版本的Python,那么它可能比os.path.join()更具可读性。但是,如果必须在僵化的或遗留的环境中运行代码,则还需要权衡与旧版本Python的兼容性。

相关问题 更多 >