【问题标题】:Python: Test if file exists at absolute path [duplicate]Python:测试文件是否存在于绝对路径中[重复]
【发布时间】:2021-03-04 18:09:17
【问题描述】:

您好,我是一个 python 菜鸟,正在尝试将一些东西放在一起。本质上,我有一个包含文件绝对路径的 ini 文件,我希望 python 测试该文件是否存在。我遇到一个错误,文件总是丢失,我认为这与我格式化路径的方式有关。我可能完全错了。

请记住,循环尚未创建,我正在尝试首先解决这个问题。但是,对于该程序的其余部分的任何建议也将不胜感激。我的意图是让它遍历所有部分,看看是否存在标记为 key 的文件。然后它在配置文件中相应地设置一个标记为状态的值。

这是我的配置文件:

[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"))

【问题讨论】:

  • debug key print 打印出正确的东西吗?你是在 Windows 机器上吗(看起来很像,因为那些是 Windows 路径)。
  • 不,即使文件存在,它也会返回文件丢失
  • 等待是的.. 它打印配置文件中写入的内容.. 是的窗口
  • 这些只是普通文件,是吗?不是链接、挂载或文件夹?
  • 应该没什么区别,但是试试“C:/test1.txt”而不是“C:\\test1.txt”

标签: python testing for-loop path absolute


【解决方案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 文件,单个反斜杠也可以。

【讨论】:

  • 非常感谢...我从来没有尝试从 ini 文件中删除“”标记。我尝试了其他所有方法...谢谢您完成了这项工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 2014-06-27
  • 2011-01-11
  • 2010-12-16
  • 1970-01-01
相关资源
最近更新 更多