(Python) 为什么我总是必须在文件函数中输入绝对路径?

发布于 2024-08-28 23:11:21 字数 156 浏览 5 评论 0原文

例如,如果我有:
C:\42\main.py

C:\42\info.txt
我想从 main.py 读取 info.txt,我必须输入“C:\42\info.txt”而不是“info.txt”。

应该是这样吗?
如果没有,我该如何修复它?

For instance, if I have:
C:\42\main.py
and
C:\42\info.txt
and I want to read info.txt from main.py, I have to input "C:\42\info.txt" instad of just "info.txt".

Is it supposed to be like that?
If not, how can I fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

情话难免假 2024-09-04 23:11:21

您可以指定相对于脚本所在位置的路径。我在编写单元测试时一直这样做。

每个 python 文件都有一个特殊的属性 - __file__ - 存储该文件的路径。

py_file= os.path.abspath(__file__) # path to main.py
py_dir = os.path.dirname(py_file) # path to the parent dir of main.py
txt_file = os.path.join(py_dir, 'info.txt') # path to info.txt

You can specify paths relative to where your script is. I do it all the time when writing unittests.

Every python file has a special attribute -- __file__ -- that stores the path to that file.

py_file= os.path.abspath(__file__) # path to main.py
py_dir = os.path.dirname(py_file) # path to the parent dir of main.py
txt_file = os.path.join(py_dir, 'info.txt') # path to info.txt
以酷 2024-09-04 23:11:21

应该是这样的。相对路径是相对于进程的当前工作目录,而不是脚本所在的目录。

It is supposed to be like that. Relative paths are relative to the process's current working directory, not the directory that your script resides in.

笑看君怀她人 2024-09-04 23:11:21

您可以使用 sys.path[0] 找到脚本的路径,而不是对其进行硬编码,然后使用 chdir 或直接在文件名中使用它:

os.path.join(sys.path[0], 'info.txt')

Rather than hardcoding it, you can find the script's path using sys.path[0], and either chdir to it or use it directly in the filename:

os.path.join(sys.path[0], 'info.txt')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文