从其他子文件夹中找到文本文件的相对路径

时间:2019-02-25 15:42:33

标签: python-3.x unix

我有一个父目录,我的python代码在一个子目录中,但是我的输入文件在另一个子目录中。如何找到输入文件的相对路径?这就是我现在所拥有的,但是它给了我这个错误-FileNotFoundError: [Errno 2] No such file or directory:

    dirc = os.path.dirname("..")
    filename = os.path.join(dirc,"/input/input_file.txt")


    f =  open(filename, "r")

1 个答案:

答案 0 :(得分:0)

这个问题似乎在问如何在python中获取Unix文件的绝对路径。它说的是相对路径,但是根据代码,相对路径是已知的,../input/input_file.txt。问题中所说明的任务并不需要那么做,仅需使用根据前提已知的相对路径即可轻松完成任务(请参见下面的注释)。但是,由于主要问题是要找到绝对路径并使用它来解决问题,所以我将回答这个问题。

您的代码中有两个问题。

  1. os.path.dirname()不会返回您要查找的绝对路径。相反,它返回给定路径的目录部分,在这种情况下,该部分为空字符串(因为您提供的路径仅包含一个文件(..计为文件)。您将要使用{{ 1}}。
  2. os.path.abspath()忽略了最后一条绝对路径之前的所有元素。由于os.path.join()具有绝对路径的形式(从"/input/input_file.txt"开始),因此它将忽略/。您将需要提供此功能的相对路径而不会引起斜线。

一起:

dirc

注意,您不需要绝对路径。通过执行以下操作,您将达到相同的效果:

import os
dirc = os.path.abspath("..")
filename = os.path.join(dirc, "input/input_file.txt")
f =  open(filename, "r")
print([line for line in f])
f.close()