请教 python 个 io 的问题

2016-11-22 21:19:00 +08:00
 chenguoyu
open("reader/" + title.get_text() + ".txt", 'w'),现在我确定 title.get_text()这个字符串中有个冒号(:),这导致我在保存文件的时候文件名只有冒号(:)前面的内容,冒号后的包括.txt 都没有了,请问这是怎么回事
2412 次点击
所在节点    Python
9 条回复
chenguoyu
2016-11-22 21:19:37 +08:00
我已经尝试着百度,谷歌了,都没有找到这个问题呢,只能来像 V 友提问了
crazycabbage
2016-11-22 21:27:41 +08:00
@chenguoyu 文件名里怎么能有冒号,你重命名一个带冒号的文件名看看
7sDream
2016-11-22 21:31:06 +08:00
如果是 Win 的话是不能有冒号的……过滤一下就好。

参见: https://github.com/7sDream/zhihu-oauth/blob/master/zhihu_oauth/zhcls/utils.py#L25
crazycabbage
2016-11-22 21:33:41 +08:00
@chenguoyu 测试了一下,在 Windows 下你可以使用中文冒号命名,用 Python 读取保存没有问题,但建议还是不用。
chenguoyu
2016-11-22 23:02:13 +08:00
@7sDream window 下是可以使用中文的冒号的
chenguoyu
2016-11-22 23:04:26 +08:00
@crazycabbage 嗯,感谢。但是我是在写爬虫呢?小说和章节名是有中文的冒号,我尝试过滤一下吧
SlipStupig
2016-11-22 23:21:32 +08:00
在 windows 下“:”代表 ADS ,:前面的是文件流前缀,不同的前缀含义不一样( https://msdn.microsoft.com/en-us/library/windows/desktop/aa364404(v=vs.85).aspx ),可以尝试转义成 URL 编码
@chenguoyu
wizardoz
2016-11-23 11:45:23 +08:00
这不是 python 的问题,是文件系统的问题。
我遇到这种问题都是绕开,懒得深究,没有太大的意义。
mayne95
2016-11-23 14:41:53 +08:00
文件名不能包含以下任意字符
\ 、/ 、: 、* 、?、 "、 <、>、|
这是系统的问题,最简单的做法是转成全角的。

str1.replace('/','/') .replace('\\','\').replace('"',"'").replace(":",":")

或者用其他的替换,比如 1*2-->1x2 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/322482

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX