Python: 检查绝对路径下文件是否存在

0 投票
1 回答
1160 浏览
提问于 2025-04-18 11:49

大家好,我是一个刚接触Python的新手,正在尝试做一些事情。简单来说,我有一个ini文件,里面包含了文件的绝对路径,我想让Python检查这些文件是否存在。但是我遇到了一个错误,程序总是显示文件缺失,我觉得可能是我格式化路径的方式有问题。也许我完全错了。

请注意,我还没有创建循环,我想先解决这个问题。不过,如果你们对程序的其他部分有建议,我也非常欢迎。我的想法是让程序循环检查所有部分,看看标记为“key”的文件是否存在。然后根据结果在配置文件中设置一个标记为“status”的值。

这是我的配置文件:

[server1] 
key = "C:\\test1.txt" 
status = 3

[server2] 
key = "M:\\test2.txt" 
status = 1

这是我的程序:

#IMPORTS
import ConfigParser
import os
import os.path
#SET SECTION NUMBER
x = 1
y = 'server'+ str(x)
#DEBUG
print y
#READ CONFIG FILE
config = ConfigParser.ConfigParser()
config.readfp(open(r'server.ini'))
key = config.get((y), 'key')
#DEBUG
print (key)
#CHECK IF FILE EXISTS
if os.path.isfile((key)):
    print "file is there"
    config.set((y), 'status', '1')
    config.write(open(r'server.ini', "w"))
else:
    print "file is missing"
    config.set((y), 'status', '3')
    config.write(open(r'server.ini', "w"))

1 个回答

1

如果你查看你程序的输出,你会发现 key 的值是:

"C:\\test1.txt"

问题出在引号上。如果把引号去掉,就能正常工作了:

server.ini:
    [server1]
    key = C:\test1.txt
    status = 3

    [server2]
    key = M:\test2.txt
    status = 1

如果你因为某种原因不能修改这个文件(可能是外部提供的),你可以在使用这个键之前去掉引号,改成:

key = config.get((y), 'key')

变成:

key = config.get((y), 'key').strip('"')

你还会注意到,我去掉了 反斜杠,因为在你的 源代码 中,字符串字面量需要用到它们。而在 INI 文件的字符串中,单个反斜杠也能正常工作。

撰写回答