开发者社区> 问答> 正文

python新手遇到的问题,‘\’在windows中显示为‘\\’,报错,怎么解决?报错

#!/usr/bin/python
#Filename:FileBackUP.py

import os
import time
source = [r'd:\temp', r'd:\"tools config"']
target_dir = 'd:\\python_tmp\\' + time.strftime('%Y%m%d')

target_filename = target_dir + '\\' + time.strftime('%H%M%S') + '.zip'
zip_command = r'c:\"program files"\7-zip\7z.exe a %s %s' %(target_filename, " ".join(source))
if not os.path.exists(target_dir):
    os.mkdir(target_dir)
    print 'Successfully created directory', target_dir

if os.system(zip_command) == 0:
    print 'Successful backup to ',target_filename
else:
    print 'Backup Failed'


上面的代码执行后,提示

C:\Users\leo>python C:\Users\leo\Desktop\test.py
Traceback (most recent call last):
  File "C:\Users\leo\Desktop\test.py", line 12, in <module>
    os.mkdir(target_dir)
WindowsError: [Error 3] : 'd:\\python_tmp\\20170213'

这个问题怎么解决,请大神帮忙,谢谢

展开
收起
爱吃鱼的程序员 2020-06-08 17:03:46 899 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    os.mkdir()不能自动创建父目录.也就是说可能你的d:\\python_tmp不存在,所以导致的报错

    有两种办法解决: 

    1. 手动创建父目录: d:\\python_tmp
    2. 用os.makedirs这个就是类似linux的mkdir-p(自动创建相应的父目录)
    d:\python_tmp是存在的

    一楼os.makedirs正解,另外#!/usr/bin/python来调用python的解释器在unix/linux的环境下是对的,而windows的话要改成你自己机器python的安装目录,还有一点在windows下边可以偷懒 目录分割可以用/代替\\(用win8+python3.4是可以,不知道你的机器+python2.*能不能),有时候像目录名首字母是t n r 比如 \tmp \run\new这种含有特殊意义的(\t\r\n) 处理不小心就会出错 不过注意点也是可以避免,创建目录的时候可以做一下异常捕获

    感谢!第一行的she-bang本来就是给linux/unix用的,在windows环境下没卵用(除非用posix运行环境,比如cygwin或mingw32,并且脚本要给可执行权限。)

    涉及到路径,使用`os.path.join("a","b","c")`这种替代手写分隔符更好点,不容易出问题。

    感谢!
    2020-06-08 17:04:01
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Improving Python and Spark 立即下载
TAKING WINDOWS 10 KERNEL 立即下载
ECS运维指南之Windows系统诊断 立即下载