推荐学习书目
› 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 · Nov 22, 2016 · 3278 views
    This topic created in 3593 days ago, the information mentioned may be changed or developed.
    open("reader/" + title.get_text() + ".txt", 'w'),现在我确定 title.get_text()这个字符串中有个冒号(:),这导致我在保存文件的时候文件名只有冒号(:)前面的内容,冒号后的包括.txt 都没有了,请问这是怎么回事
    9 replies  •  2016-11-23 14:41:53 +08:00
    chenguoyu
        1
    chenguoyu  
    OP
       Nov 22, 2016
    我已经尝试着百度,谷歌了,都没有找到这个问题呢,只能来像 V 友提问了
    crazycabbage
        2
    crazycabbage  
       Nov 22, 2016 via Android
    @chenguoyu 文件名里怎么能有冒号,你重命名一个带冒号的文件名看看
    7sDream
        3
    7sDream  
       Nov 22, 2016
    如果是 Win 的话是不能有冒号的……过滤一下就好。

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

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

    或者用其他的替换,比如 1*2-->1x2 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2513 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 01:25 · PVG 09:25 · LAX 18:25 · JFK 21:25
    ♥ Do have faith in what you're doing.