关于python:errno 22无效模式w+或文件名

Errno 22 invalid mode w+ or filename

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

所以我在创建一个文件时遇到了一些问题,文件名为"name"[分隔符]"datetime".txt

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

将字符串转换为有效的文件名?

python:如何将字符串转换为utf-8

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

但这对我来说仍然不管用。

我的概念很简单:给定一个名称和内容,用这个名称和内容编写一个文件。

我的代码是:

1
2
3
4
5
6
7
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使用sligify的结果。

我的原作没有那句台词。也许还有更好的命名方法。我认为名称和日期时间很正常,但我不确定在名称和日期时间等之间应该使用什么分隔符。

据记录,我目前没有使用django,因为我不需要这个框架。我只是想测试一种传递字符串和JSON映射的方法,并将其本质上转换为config.json文件。

最后,我想利用一个网站的Ajax请求来完成这项工作,但这超出了这个问题的范围。


在文件名掩码中使用其他分隔符:

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

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

编辑:根据注释删除了冒号。