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
justincnn
V2EX  ›  Python

[求助,急] Python 文件保存出错,

  •  
  •   justincnn · 2020-02-29 16:22:40 +08:00 · 2653 次点击
    这是一个创建于 1714 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我写了一段 python 爬虫小程序,在 mac os 下可以正常保存文件,但是 win 下面保存出错,具体代码如下: xl.save(path_1 + '/'+str(name_exl) + '.xlsx') 错误提示:

    OSError: [Errno 22] Invalid argument: 'C:/Users/Justin Ye/Desktop/2020-02-29 16:15:08.xlsx'

    google 了下,应该是\和 /的问题,

    我把代码修改为:

    xl.save(path_1 + '\'+str(name_exl) + '.xlsx') 还是不行,

    其中 path_1 是用户在图形界面选择的文件保存路径,

    请大神告知下处理办法,万分感谢啊

    11 条回复    2020-02-29 18:35:10 +08:00
    Jblue
        1
    Jblue  
       2020-02-29 16:24:23 +08:00
    os.path.join()
    justincnn
        2
    justincnn  
    OP
       2020-02-29 16:38:29 +08:00
    @Jblue 谢谢,感觉应该就是 os 可以解决,但是我修改为; xl.save(os.path.join(path_1, '/' , str(name_exl) , '.xlsx'))
    跳错的内容改为:OSError: [Errno 22] Invalid argument: 'C:/2020-02-29 16:35:46\\.xlsx'

    可以告知下:应该如何用 os.path.join()修改,刚开始学 win 的 python,谢谢啊。
    TimePPT
        3
    TimePPT  
       2020-02-29 16:40:30 +08:00
    试试用 pathlib,跨平台时候好用
    https://docs.python.org/3/library/pathlib.html
    xiri
        4
    xiri  
       2020-02-29 17:04:18 +08:00
    windows 文件、文件夹名不能包含:的
    xiri
        5
    xiri  
       2020-02-29 17:05:06 +08:00
    @xiri 你可以去试一下手动新建一个名为 2020-02-29 16:15:08.xlsx 的文件就知道了
    renmu
        6
    renmu  
       2020-02-29 17:13:54 +08:00 via Android
    4 楼正解
    itskingname
        7
    itskingname  
       2020-02-29 17:31:18 +08:00 via iPhone
    xl.save(os.path.join(path_1, str(name_exl) + '.xlsx'))
    ClericPy
        8
    ClericPy  
       2020-02-29 17:32:47 +08:00
    re.sub(r'[^ \w]+', '_', name).strip()
    lonewolfakela
        9
    lonewolfakela  
       2020-02-29 18:15:11 +08:00
    @xiri 准确来讲,文件名部分可以有一个冒号(但是不能像楼主一样用两个)。不过我估计很多人都不会注意到一个冒号会产生什么神奇的效果就是了。
    具体可以参考 https://winaero.com/blog/alternative-ntfs-streams-in-windows-10/
    AlohaV2
        10
    AlohaV2  
       2020-02-29 18:26:06 +08:00 via iPhone
    @justincnn join 不需要加层级的分隔符 /或是\
    ipwx
        11
    ipwx  
       2020-02-29 18:35:10 +08:00
    windows 文件名不能用冒号。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   935 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 21:50 · PVG 05:50 · LAX 13:50 · JFK 16:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.