OS X系统下Python备份脚本正确路径配置方法
报错根因
你踩了三个新手跨系统抄代码的典型错误,和你之前反复试路径分隔符的操作没关系,都是硬语法和系统适配问题:
- zip命令格式完全写错。原示例里
zip -qr是「zip命令 + 空格 + qr参数」结构,你写的zip-qr{0}{1}把命令、参数、文件路径全粘成了连续字符串,系统根本找不到名为zip-qrxxxx的可执行程序,直接触发"No such file or directory"报错。 - 路径分隔符适配错误。OS X是类Unix系统,原生路径分隔符只能用正斜杠
/,你第二个版本里照搬Windows的反斜杠\写路径是完全错误的——反斜杠在Unix Shell里是转义字符,会把后面跟随的字母解析为特殊字符,根本识别不到正确路径。你之前尝试/、//、\等写法属于无效试错,Windows的反斜杠规则在Mac上完全不适用。 - 未提前创建备份存储目录。zip命令不会自动生成不存在的父文件夹,如果你配置的
/Users/yaroslav_skripnik/backup目录没有提前手动创建,写入压缩包时同样会报路径不存在错误。
修正后可直接运行的代码
import os import time # 要备份的源文件/文件夹路径列表,Mac下直接用正斜杠写绝对路径即可 source = ['/Users/yaroslav_skripnik/notes'] # 备份文件存储目录 target_dir = '/Users/yaroslav_skripnik/backup' # 自动创建备份目录,目录已存在时不会报错 os.makedirs(target_dir, exist_ok=True) # 拼接压缩包完整路径,os.sep会自动适配当前系统的路径分隔符 target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip' # 注意命令各部分之间必须留空格:zip 空格 -qr 空格 压缩包路径 空格 源路径 zip_command = "zip -qr {0} {1}".format(target, ' '.join(source)) print('执行的命令为:', zip_command) # 执行备份逻辑 if os.system(zip_command) == 0: print('备份成功,文件存储路径:', target) else: print('备份失败')
前置校验步骤
如果跑代码还是报错,按以下顺序排查:
- 打开终端执行
which zip,如果返回类似/usr/bin/zip的路径,说明系统自带zip命令行工具可用;如果没有返回,先安装命令行zip工具 - 验证源路径有效性:打开访达按下
Shift+Command+G,粘贴你写的源路径回车,能正常打开对应文件夹就说明路径配置正确 - 如果路径里包含带空格的文件夹名,给对应路径外层套上单引号再拼接命令即可,不需要照搬Windows的双引号转义写法
内容的提问来源于stack exchange,提问作者Ярослав Скрипник
相关产品推荐
相关产品推荐

