V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
chenguoyu
V2EX  ›  Python

请教 python 个 io 的问题

  •  
  •   chenguoyu · 2016-11-22 21:19:00 +08:00 · 2513 次点击
    这是一个创建于 2942 天前的主题,其中的信息可能已经有所发展或是发生改变。
    open("reader/" + title.get_text() + ".txt", 'w'),现在我确定 title.get_text()这个字符串中有个冒号(:),这导致我在保存文件的时候文件名只有冒号(:)前面的内容,冒号后的包括.txt 都没有了,请问这是怎么回事
    9 条回复    2016-11-23 14:41:53 +08:00
    chenguoyu
        1
    chenguoyu  
    OP
       2016-11-22 21:19:37 +08:00
    我已经尝试着百度,谷歌了,都没有找到这个问题呢,只能来像 V 友提问了
    crazycabbage
        2
    crazycabbage  
       2016-11-22 21:27:41 +08:00 via Android
    @chenguoyu 文件名里怎么能有冒号,你重命名一个带冒号的文件名看看
    7sDream
        3
    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
        4
    crazycabbage  
       2016-11-22 21:33:41 +08:00 via Android
    @chenguoyu 测试了一下,在 Windows 下你可以使用中文冒号命名,用 Python 读取保存没有问题,但建议还是不用。
    chenguoyu
        5
    chenguoyu  
    OP
       2016-11-22 23:02:13 +08:00 via iPhone
    @7sDream window 下是可以使用中文的冒号的
    chenguoyu
        6
    chenguoyu  
    OP
       2016-11-22 23:04:26 +08:00 via iPhone
    @crazycabbage 嗯,感谢。但是我是在写爬虫呢?小说和章节名是有中文的冒号,我尝试过滤一下吧
    SlipStupig
        7
    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
        8
    wizardoz  
       2016-11-23 11:45:23 +08:00
    这不是 python 的问题,是文件系统的问题。
    我遇到这种问题都是绕开,懒得深究,没有太大的意义。
    mayne95
        9
    mayne95  
       2016-11-23 14:41:53 +08:00   ❤️ 1
    文件名不能包含以下任意字符
    \ 、/ 、: 、* 、?、 "、 <、>、|
    这是系统的问题,最简单的做法是转成全角的。

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

    或者用其他的替换,比如 1*2-->1x2 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2263 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:54 · PVG 23:54 · LAX 07:54 · JFK 10:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.