open()方法I / O错误

时间:2015-07-15 17:24:05

标签: python dictionary types

我正在尝试将每个程序运行的所有设置写入配置文件。

这一行给了我一些奇怪的问题:

cfgfile = open(config_filename, 'w+')

我收到'No such file or directory'类型的I / O错误。无论标志是w +,a等等,都会发生这种情况。

我从存储在字典中的字符串创建config_filename,与另一个短字符串连接:

config_filename = my_dict['key'] + '_PARAMETERS.txt'

这似乎是导致问题的原因。我已经使用

进行了测试
config_filename = 'test' + '_PARAMETERS.txt' 

它工作正常,在写入之前创建文件。

任何人都可以解释为什么会发生这种情况,我已经检查过我在同一个目录中并且类型(config_filename)按预期方式抛出字符串。这与dicts如何存储数据有关吗?

感谢。

1 个答案:

答案 0 :(得分:1)

根据您的评论,您似乎正在尝试创建一个名称包含斜杠的文件。这将失败,因为文件名中不允许斜杠,因为它们由OS保留以指示目录结构。 Windows文件名中也不允许使用冒号。

尝试将my_dict['key']替换为my_dict['key'].replace('/', ''),这将删除斜杠并生成类似Results_150715_18:32:09_PARAMETERS.txt的文件名。对于Windows,添加.replace(':','')以删除冒号。

我应该澄清文件名称中不允许使用斜杠,但文件路径中允许使用斜杠。您尝试使用的文件名将尝试在15_18:32:09_PARAMETERS.txt文件夹中包含的07文件夹中创建名为Results_15的文件。这不是你想要的,但只要存在目录结构,它就不会失败(无论如何都在Windows上)。此外,Windows系统不允许冒号位于路径中的任何位置,除非指示驱动器,例如, C: