尝试通过变量使用os.path.exists,但出现错误

时间:2020-10-26 07:32:49

标签: python python-2.7

我有一个名为serial.dll的文件。该文件的内容是另一个文件的名称:

a-2ED1-7156.dll

我在同一目录中还有一个名为a-2ED1-7156.dll的文件。

当我尝试通过从serial.dll读取文件名来检查文件是否存在时:

f = open('serial.dll', 'r')

serials = f.read()

if os.path.exists(serials):
    print("ok")
else:
    print("no")

总是结果为“否”。

但是:

file = 'a-2ED1-7156.dll'

if os.path.exists(file):
    print("ok")
else:    
    print("no")

始终给出正确的结果。

如何通过从a-2ED1-7156.dll文件中读取文件来检查文件serial.dll是否存在?

Update Try: 

f = open('serial.dll', 'r')
lines = f.readline()
for line in lines:
    if os.path.exists(line):
        print('ok')
    else:
        print("no")

results error:
no
no
no
no
no
no
no
no
no
no
no
ok
no
no
no
no

2 个答案:

答案 0 :(得分:1)

假设每个文件都在单独的行中,您可以使用

lines = f.readlines()
for line in lines:
    if os.path.exists(line):
        print('ok')

或仅在所有文件都存在时才打印,具体取决于您想要的内容。

答案 1 :(得分:0)

您的问题是文件中的行可能以换行符结尾。文件名通常不包含该字符。例如,现在您正在检查文件a-2ED1-7156.dll\n是否存在-否。您只需要strip()行,然后将它们检查为文件即可:

f = open('serial.dll')

for line in f:
    filename = line.strip()
    if os.path.exists(filename):
        print(f"{filename} exists")
    else:
        print(f"{filename} doesn't exist")
相关问题