Python: 检查绝对路径下文件是否存在
大家好,我是一个刚接触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 文件的字符串中,单个反斜杠也能正常工作。