首页 > 解决方案 > 将路径参数/变量从批处理文件传递给 python,sys.argv[] 只给出最后一个目录而不是整个字符串

问题描述

scan为 Windows 终端创建了一个自定义命令。我的目标是自动将我的扫描移动到某个目录。我将对我的路径进行硬编码,但如果我想将我的扫描移动到不同的目录,我已经包含了一个参数 2(参数 1 是“开始”执行)。我的批处理文件将路径作为字符串传递给我的 python 脚本。

我知道这一点,因为当我写

scan start "C:/path/to/target/dir/"

进入我的 Windows 终端,它会吐出以下内容来运行我的脚本。

python "C:\Users\MY USERNAME\my_scripts\scan.py" start C:/path/to/target/dir/

不幸的是,我无法使用以下代码“读取”整个路径:

print(Path(sys.argv[2]).stem)

在这种情况下,结果是dir

print(Path(sys.argv[0]).stem)=scan

print(Path(sys.argv[1]).stem)=start

print(Path(sys.argv[2]).stem)=dir

为什么我没有得到整个路径,我如何得到它?我想要这样的东西:

print(Path(sys.argv[2]).stem)=C:/path/to/target/dir/

标签: pythonbatch-filepathsys

解决方案


您确实正在阅读整个路径。但是你正在阻止它,缩短为 dir。使用以下

print(Path(sys.argv[1]))

推荐阅读