问候我是一个试图把东西放在一起的蟒蛇诺布。基本上我有一个包含文件绝对路径的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"))
答案 0 :(得分: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文件,单个反斜杠也可以。