首页 > 解决方案 > 检查目录是否存在的问题

问题描述

我正在尝试从外部文件 (config.txt) 加载配置。该文件包含有关我的驱动器上的目录的信息。我编写了一种读取 config.txt 行并返回其值的方法。第二种方法检查目录的存在。后一种方法的第一次调用总是导致False,即使给定目录存在。

我尝试了不同的目录,甚至两行中的相同目录。对于第一个电话,我总是得到一个“假”。第二次调用导致正确答案。如果从带有任何目录的终端调用该方法,我会得到正确的结果。

import os    

def _load_config(setting_line, setting_print):
     temp_file = open("config.txt", "r")
     temp_setting = temp_file.readlines()[setting_line]
     temp_file.close()
     print(setting_print,temp_setting)
     return temp_setting

 def _Check_Folder_Exists(temp_path):
    if os.path.exists(temp_path):
        print("dir found")
    else:
        print("dir NOT found")

dir_A = _load_config(0, "dir A:")
_Check_Folder_Exists(dir_A)

dir_B = _load_config(1, "dir B:")
_Check_Folder_Exists(dir_B)

config.txt 看起来像:

C:\A
C:\B

这两个目录都存在并且可以访问。

结果总是:

dir A: C:\A

dir NOT found
dir B: C:\B
dir found

另外:我不明白为什么在第一个之后有一个空行。

标签: pythonpython-3.x

解决方案


这两个问题是相关的。这是因为当你使用 时readlines(),你会得到包括换行符在内的整行;所以 的值dir_A实际上是C:\A\n

使用strip

temp_setting = temp_file.readlines()[setting_line].strip()

推荐阅读