Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将path参数/变量从批处理文件传递到python,sys.argv[]ony给出最后一个目录,而不是整个字符串_Python_Batch File_Path_Sys - Fatal编程技术网

将path参数/变量从批处理文件传递到python,sys.argv[]ony给出最后一个目录,而不是整个字符串

将path参数/变量从批处理文件传递到python,sys.argv[]ony给出最后一个目录,而不是整个字符串,python,batch-file,path,sys,Python,Batch File,Path,Sys,我已经为windows终端创建了一个自定义命令scan。我的目标是自动将扫描移动到某个目录。我将硬编码我的路径,但如果我想将扫描移动到另一个目录,我已经包含了一个参数2(参数1是“开始”执行)。批处理文件将路径作为字符串传递给python脚本 我知道这是因为当我写作的时候 scan start "C:/path/to/target/dir/" 在我的windows终端中,它吐出以下内容来运行我的脚本 python "C:\Users\MY USERNAME\my_

我已经为windows终端创建了一个自定义命令
scan
。我的目标是自动将扫描移动到某个目录。我将硬编码我的路径,但如果我想将扫描移动到另一个目录,我已经包含了一个参数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

打印(路径(sys.argv[0]).stem)
=
扫描

打印(路径(sys.argv[1]).stem)
=
开始

打印(路径(sys.argv[2]).stem)
=
dir

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


print(Path(sys.argv[2]).stem)
=
C:/Path/to/target/dir/
您确实在阅读整个路径。但是你要阻止它,缩短到dir。使用以下命令

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

为什么要使用
stem
?它完全符合您所展示的内容,即所产生的输出没有任何错误/意外;如果想要不同的结果,请不要使用
stem
。阅读@barny的文档,因为我是编程和python的初学者,我对很多可用的模块不太熟悉,我发现很难找出问题的根源。既然你提到了这一点,我觉得自己像个白痴:D,但我会提醒自己更经常地阅读文档。谢谢@Mofi,谢谢你的回答。我尝试了
python“%~dp0scan.py”%*
(我将目录添加到路径中)。但是如果我没有输入第二个参数(我希望是可选的),那么我的python脚本将返回一个
索引器:列表索引超出范围,这是有意义的。目前,我的批处理文件中有一些IF语句,如果没有,则将参数设置为空字符串。我相信python中有一个更好的解决方案,但目前还可以。关于这个话题,我得做更多的研究。