与平台无关的文件路径?

Hai*_*iro 44 python cross-platform path

如何在Python中的app文件夹中使用文件?平台独立当然......类似于此:

#!/bin/sh
mypath=${0%/*}
LIBDIR=$mypath/modules
Run Code Online (Sandbox Code Playgroud)

Ble*_*der 74

您可以使用os.path及其功能来处理特定于操作系统的路径:

>>> import os
>>> os.path.join('app', 'subdir', 'dir', 'filename.foo')
'app/subdir/dir/filename.foo'
Run Code Online (Sandbox Code Playgroud)

在Windows上,它应该打印出反斜杠.

  • 它实际上为我打印了“app\\subdir\\dir\\filename.foo”。 (2认同)
  • @ArditS.那是因为你需要在字符串中转义反斜杠.如果你添加`print`,你会看到`print(os.path.join("foo","bar","baz"))`确实打印`foo\bar\baz`. (2认同)

avi*_*ldg 18

import os
os.path.join(os.path.curdir, 'file.name')
Run Code Online (Sandbox Code Playgroud)

要么

import os
os.path.join(os.path.dirname(__file__), 'file.name')
Run Code Online (Sandbox Code Playgroud)

根据其是否是一个模块(2)或一个脚本(1) ,并且不管你是从同一目录调用它(1) ,或从一个不同的(2) .

编辑

看看你在问题中的"尝试",我猜你想要(1).


Eug*_*ash 8

在Python 3.4+中,您可以使用pathlib:

from pathlib import Path

libdir = Path(__file__).resolve().with_name('modules')
Run Code Online (Sandbox Code Playgroud)

  • 或者只是:`path = Path(__ file __).resolve().with_name("modules")` (2认同)

Ign*_*ams 5

__file__包含模块的位置.使用函数os.path从中提取目录.