os.path.abspath('file1.txt')不返回正确的路径

时间:2012-04-05 09:16:01

标签: python path

说文件'file1.txt'的路径是/home/bentley4/Desktop/sc/file1.txt 说我当前的工作目录是/home/bentley4

import os
os.path.abspath('file1.txt')

返回/home/bentley4/file1.txt

os.path.exists('file1.txt')

返回False。 如果我做

os.path.abspath('file_that_does_not_exist.txt')

返回/home/bentley4/file_that_does_not_exist.txt 但同样,这是不正确的。该文件甚至不存在于我的计算机上。有没有办法从我目前工作的任何目录中获取正确的绝对路径? (除了定义新功能)

所以这只有在我与现有文件位于同一目录或目录中的一个目录或更远离该文件目录的路径时才有效?

5 个答案:

答案 0 :(得分:12)

os.path.abspath(filename)返回从当前工作目录中看到的绝对路径。它不会检查文件是否确实存在。

如果您想要/home/bentley4/Desktop/sc/file1.txt的绝对路径而且您在/home/bentley4,则必须使用os.path.abspath("Desktop/sc/file1.txt")

答案 1 :(得分:1)

abspath只是构建一个路径,它不会检查有关现有文件的任何内容。

来自文档:

  

在大多数平台上,这相当于normpath(join(os.getcwd(),path))。

答案 2 :(得分:0)

您将获得os.path.abspath(__file__)的路径。

答案 3 :(得分:0)

问题应该是先前使用了cwd进行了更改 os.chdir(another_path),它仍然在当前执行的上下文中加载。 所以修复应该是在another_path中的任务使用完成后恢复原始路径 示例:

  original_path = os.getcwd()
  os.chdir(another_path) 
  # here perform some operation over another_path
  os.chdir(original_path ) # here is the restore of the original path

答案 4 :(得分:0)

我正在研究同一问题,发现了这一点,希望对您有所帮助:

os.path.join(root,f)