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

(Python)为什么我总是必须在文件函数中键入绝对路径?,python,absolute-path,Python,Absolute Path,例如,如果我有: C:\42\main.py 和 C:\42\info.txt 我想从main.py读取info.txt,我必须输入C:\42\info.txt instad of just info.txt 应该是这样吗? 如果没有,我如何修复它?应该是这样的。相对路径相对于进程的当前工作目录,而不是脚本所在的目录。您可以使用sys.path[0]找到脚本的路径,并将其chdir或直接在文件名中使用: os.path.join(sys.path[0], 'info.txt') 您可以指定相对

例如,如果我有: C:\42\main.py 和 C:\42\info.txt 我想从main.py读取info.txt,我必须输入C:\42\info.txt instad of just info.txt

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

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

您可以使用sys.path[0]找到脚本的路径,并将其chdir或直接在文件名中使用:

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

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

每个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

我不知道……但是,我强烈建议不要在python中以这种方式打开路径,因为它会删除可移植代码的功能。而是创建一个抽象目录路径字符串。从那里,您可以放置您的C:\42。然后,在创建字符串时,将路径字符串和文件字符串info.txt(在本例中)连接在一起。然后,您可以将路径字符串设置为相对于OS工作。sys.path[0]返回从命令行调用的脚本的路径。它不适用于从其他目录导入的脚本。