我正在尝试获取文件的绝对路径,但是它不起作用。我的代码仅显示运行代码目录的路径。这是我尝试过的两种方法:
1)
import os
print(os.path.abspath("More_Types.py"))
2)
import os
print(os.path.realpath("More_Types.py"))
但是我继续获得正在运行的程序的完整路径。如何获取文件的正确路径,该路径位于计算机的其他位置?
PS:很抱歉,我无法提供输出,因为它将显示我正在运行的程序中的所有文件夹。
答案 0 :(得分:0)
More_Types.py
,subdir/More_Types.py
和../More_Types.py
是相对路径。
结果
如果提供相对路径,realpath
和abspath
将返回相对于当前工作目录的绝对路径。因此,从本质上讲,它们的行为类似于os.path.join
,其中当前工作目录为第一个参数:
>>> import os.path
>>> os.path.join(os.getcwd(), 'More_Types.py') == os.path.abspath('More_Types.py')
True
这说明了为什么您得到说明的结果。
说明
abspath
的目的是将相对路径转换为绝对路径:
>>> os.path.abspath('More_Types.py')
'/home/meisterluk/More_Types.py'
与abspath
不同,relpath也遵循符号链接。从技术上讲,这很危险,并且可能使您陷入无限循环(如果链接指向其父目录中的任何一个):
>>> os.path.abspath('More_Types.py')
'/net/disk-user/m/meisterluk/More_Types.py'
建议的解决方案
但是,如果要检索相对于其他目录的绝对路径,则可以直接使用os.path.join
:
>>> directory = '/home/foo'
>>> os.path.join(directory, 'More_Types.py')
'/home/foo/More_Types.py'
>>>
我认为,对您的问题的最佳答案是:您需要指定文件所在的目录。然后可以使用os.path.join
创建绝对文件路径。
答案 1 :(得分:0)
如果需要,您可以使用它:
import os
a='MoreTypes.py'
for root , dirs , files in os.walk('.') :
for file in files:
if file==a:
print(os.path.join(root,file))