Errno 22无效模式w +或文件名

时间:2017-05-09 20:24:58

标签: python

IOError: [Errno 22] invalid mode ('w+') or filename: 'hodor_2017-05-09_14:03:38.txt'

所以我在创建文件时遇到了问题,因为它是" name" [分隔符]" datetime" .TXT

我正在查找不同的代码,例如:

Turn a string into a valid filename?

python: how to convert a string to utf-8

https://github.com/django/django/blob/master/django/utils/safestring.py

它似乎对我不起作用。

我的概念很简单:给定名称和内容写一个具有该名称和内容的文件。

我的代码是:

def create_json_file(name, contents):
    filename = u"%s_%s.json" % (name, datetime.datetime.now().strftime("%Y/%m/%d_%H:%M:%S"))
    print "%s" % filename
    filename = slugify(filename)
    f = open(filename, "w+")
    f.write(contents)
    f.close()

你可以看到我一直在调整它。我正在查看django所做的结果,它使用了slugify。

我原来没有那条线。也许还有一种更好的方法来命名文件。我认为名称和日期时间很正常,但我不确定在名称和日期时间之间应该使用哪些分隔符。

为了记录,我目前没有使用Django,因为我不需要框架。我只是试图测试传递字符串和json映射的方法,并将其转换为config.json文件。

最后,我想利用网站上的AJAX请求执行此操作,但这超出了此问题的范围。

1 个答案:

答案 0 :(得分:4)

在文件名掩码中使用不同的分隔符:

filename = u"%s_%s.json" % (name, datetime.datetime.now().strftime("%Y_%m_%d_%H%M%S"))

操作系统正试图打开2005/04 / 01_5:45:04.json。文件/目录名称中不允许斜杠。

编辑:删除冒号以回应评论。