Python读取:使用绝对路径时未找到文件

Python读取:使用绝对路径时未找到文件,python,Python,我有一个Python程序可以在本地读取文件: 在我有这个程序的目录中,有一个名为path_list的文件它是一个文件路径列表,我可以像这样打开和访问它: test_explicit = open('path_list').read() print 'Reading local file gives: ' + test_explicit 然后程序将在这些路径中循环,并在每个路径上调用以下函数,根据上面版本目录中找到的内容执行操作。不幸的是,在这里,当我使用绝对路径而不是相对路径时,那些相同的打

我有一个Python程序可以在本地读取文件:

在我有这个程序的目录中,有一个名为path_list的文件它是一个文件路径列表,我可以像这样打开和访问它:

test_explicit = open('path_list').read()
print 'Reading local file gives: ' +  test_explicit
然后程序将在这些路径中循环,并在每个路径上调用以下函数,根据上面版本目录中找到的内容执行操作。不幸的是,在这里,当我使用绝对路径而不是相对路径时,那些相同的打开/读取操作会给出“没有这样的文件或目录”错误。但是当我打印出它要去的地方,然后在那里,我看到了我期望的内容

以下是我代码的相关部分:

    def getCommand(path):

      # Grab that trailing /version, strip the v, convert to int
      split_path = path.split("/")
      version = split_path.pop()
      version_num = int (version[1:] )

      # Increment that number, and remake path with a fresh /v(x+1) suffix
      version_num += 1
      new_suffix = '/v' + str(version_num)
      higher_file_path = '/'.join(split_path)
      higher_file_path += new_suffix

      finished_filename = 'finished.txt'
      finished_filepath = os.path.join(higher_file_path, finished_filename)

      result = open(finished_filepath).read()
      print 'Result is: ' + result
[more code]
当我运行它时,我在打开并读取的线路上出现故障:

但是当我在那里读到ls或cd时,我确实看到了该文件。

~在Python中不是/home/username/或/Users/username/的有效快捷方式。您需要使用完整的扩展路径

os.path.expanduser可能对您很有用。

~在Python中不是/home/username/或/Users/username/的有效快捷方式。您需要使用完整的扩展路径


os.path.expanduser在这里可能对您有用。

您需要使用以下函数来扩展“~”

os.path.expanduser(path)
更新: 在您的情况下,它可能如下所示:

result = open(os.path.expanduser(finished_filepath)).read()

您需要使用以下函数来展开“~”

os.path.expanduser(path)
更新: 在您的情况下,它可能如下所示:

result = open(os.path.expanduser(finished_filepath)).read()

如前所述,您在文件路径中使用了一个shell特殊字符~需要在打开之前将其转换为实际路径。通过执行以下操作,还可以在路径中允许环境变量:

path = os.path.expanduser(os.path.expandvars(path))

如前所述,您在文件路径中使用了一个shell特殊字符~需要在打开之前将其转换为实际路径。通过执行以下操作,还可以在路径中允许环境变量:

path = os.path.expanduser(os.path.expandvars(path))


“~”由操作系统外壳扩展。函数read不使用shell打开文件,无法进行扩展。必须先将以“~”开头的路径转换为绝对路径。我错了-就是这样-谢谢!~”由操作系统外壳扩展。函数read不使用shell打开文件,无法进行扩展。您必须先将以“~”开头的路径转换为绝对路径。我错了-就是这样-谢谢!如果你试图回答,请有建设性。你需要的不是建设性的。我不理解这种批评的理由。你能给我一个建设性的例子,说明今后如何更好地表达我的答案吗?例如,这与您在几乎相同的时间所做的评论有什么显著的不同:您必须首先将以“~”开头的路径转换为绝对路径。这是“必须”和“需要”这个词的用法吗?我感谢你的指导。你只是改变了你的答案,使之具有建设性。我在看到你的评论之前改变了我的答案,因为我想补充更多的信息。我不相信我的回答以前没有建设性。我刚才解释说,~在Python中不会自动扩展,它们需要使用扩展路径来代替。非常感谢!我完全忽略了~。我现在已经换了,很遗憾,我仍然遇到同样的问题。我会更新上面的描述,以消除路上的颠簸。如果你试图回答,请有建设性。你需要的不是建设性的。我不理解这种批评的理由。你能给我一个建设性的例子,说明今后如何更好地表达我的答案吗?例如,这与您在几乎相同的时间所做的评论有什么显著的不同:您必须首先将以“~”开头的路径转换为绝对路径。这是“必须”和“需要”这个词的用法吗?我感谢你的指导。你只是改变了你的答案,使之具有建设性。我在看到你的评论之前改变了我的答案,因为我想补充更多的信息。我不相信我的回答以前没有建设性。我刚才解释说,~在Python中不会自动扩展,它们需要使用扩展路径来代替。非常感谢!我完全忽略了~。我现在已经换了,很遗憾,我仍然遇到同样的问题。我将更新上面的描述,以消除路上的颠簸。非常感谢!我完全忽略了~。我现在已经换了,很遗憾,我仍然遇到同样的问题。我将更新上面的描述,以消除路上的颠簸。非常感谢!我完全忽略了~。我现在已经换了,很遗憾,我仍然遇到同样的问题。我将更新上面的描述,以消除路上的颠簸。非常感谢!我完全忽略了~。我现在已经换了,很遗憾,我仍然遇到同样的问题。我将更新上面的描述,以消除路上的颠簸。我错了-就是这样-谢谢!非常感谢你!我完全忽略了~。我现在已经换了,可悲的是,我仍然得到了和我一样的东西
苏。我将更新上面的描述,以消除路上的颠簸。我错了-就是这样-谢谢!