与平台无关的文件路径?
如何在 Python 中使用应用程序文件夹内的文件?当然与平台无关...... 与此类似的东西:
#!/bin/sh
mypath=${0%/*}
LIBDIR=$mypath/modules
How can I use a file inside my app folder in Python? Platform independent of course...
something similar to this:
#!/bin/sh
mypath=${0%/*}
LIBDIR=$mypath/modules
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以使用 os.path 及其函数,它们负责处理特定于操作系统的路径:
在 Windows 上,它应该用反斜杠打印出来。
You can use
os.path
and its functions, which take care of OS-specific paths:On Windows, it should print out with backslashes.
或者
取决于它是模块(2)还是单个脚本(1),以及您是否从同一目录调用它(1)< /em>,或来自不同的(2)。
编辑
看看您在问题中的“尝试”,我猜您会想要(1)。
or
depending upon whether it's a module (2) or a single script (1), and whether you're invoking it from the same directory (1), or from a different one (2).
Edit
Looking at the "attempt" you have in your question, I'd guess that you'd want (1).
在 Python 3.4+ 中,您可以使用
pathlib
:如何它有效:
__file__
属性包含加载模块的文件的路径名。您可以使用它来初始化Path
对象,使用resolve()
方法并使用with_name()
方法。In Python 3.4+ you can use
pathlib
:How it works: the
__file__
attribute contains the pathname of the file from which the module was loaded. You use it to initialize aPath
object , make the path absolute using theresolve()
method and replace the final path component using thewith_name()
method.__file__
包含模块的位置。使用 os.path 中的函数从中提取目录。__file__
contains the module's location. Use the functions inos.path
to extract the directory from it.尝试这种符合 CLR 的方式:
用法:
受到 .NET Framework 和 Core 中的
System.AppDomain
的启发。你知道它是如何运作的吗?首先,它
导入
sos
。之后,它创建一个名为AppDomain
的变量,该变量被设置为一个类型的实例,其中其构造函数将其自己的CurrentDomain
设置为其构造函数设置其自身的类型的实例。将BaseDirectory
指向由os.path.split
返回的数组中的第一个元素,并将__file__
的值(模块路径)作为参数。Try this CLR-compliant way:
Usage:
Inspired by
System.AppDomain
in .NET Framework and Core.Do you know how it works? First off, it
import
sos
. After that, it creates a variable calledAppDomain
which is set into an instance of a type where its constructor sets its ownCurrentDomain
to an instance of a type where its constructor sets its ownBaseDirectory
to the first element in the array returned byos.path.split
with the value of__file__
(the module path) as a parameter.