You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中能否用相对路径替代绝对路径实现文件复制?如何操作?

当然可以用相对路径实现这个复制操作!不过得先搞清楚一个核心点——相对路径的解析完全依赖于脚本运行时的「当前工作目录」,所以第一步得先明确你的脚本是从哪个目录启动的。

1. 先确认当前工作目录

运行下面的代码就能知道当前脚本的工作目录:

import os
print(os.getcwd())

比如如果输出是C:\users\admin,那你的源路径相对这个目录就是./Downloads/Application1,目标路径就是./Documents/Packages;如果脚本是从C:\users\admin\Downloads启动的,那源路径就是./Application1,目标路径就是../Documents/Packages。

2. 用相对路径实现复制的具体代码

我们常用shutil模块来处理文件/文件夹的复制,结合os模块来处理路径:

示例1:基于当前工作目录直接使用相对路径

import os
import shutil

# 定义相对路径(根据你的工作目录调整)
source_rel = "./Downloads/Application1"  # 对应绝对路径C:\users\admin\Downloads\Application1
dest_rel = "./Documents/Packages"        # 对应绝对路径C:\users\admin\Documents\Packages

# 可选但推荐:把相对路径转为绝对路径,避免工作目录变化导致的问题
source_abs = os.path.abspath(source_rel)
dest_abs = os.path.abspath(dest_rel)

# 复制整个文件夹(如果目标已存在,加上dirs_exist_ok=True避免报错)
shutil.copytree(source_abs, dest_abs, dirs_exist_ok=True)

# 如果是复制单个文件,用下面的代码:
# shutil.copy2(source_abs, dest_abs)

示例2:手动切换到基准目录再用相对路径

如果你不想依赖当前工作目录,可以先切换到C:\users\admin,这样相对路径就固定了:

import os
import shutil

# 切换到基准目录
base_dir = "C:\\users\\admin"
os.chdir(base_dir)

# 现在相对路径就基于这个基准目录了
source_rel = "./Downloads/Application1"
dest_rel = "./Documents/Packages"

shutil.copytree(source_rel, dest_rel, dirs_exist_ok=True)

几个关键注意事项

  • 路径分隔符:Windows里用\或者/都可以,Python会自动处理,但用\的时候要记得转义(写成\\)或者用原始字符串(比如r"C:\users\admin")。
  • 目标目录已存在:shutil.copytree默认会在目标目录已存在时报错,加上dirs_exist_ok=True参数就能覆盖或者合并已存在的目录(Python 3.8+支持)。
  • 相对路径的坑:如果你的脚本被其他程序调用,当前工作目录可能不是你预期的,所以转成绝对路径是更稳妥的做法。

内容的提问来源于stack exchange,提问作者user4532954

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:25:59