使用sys.argv将命令行参数传递给python脚本
我知道这个问题有各种各样的问题,但似乎没有一个适合我的具体情况: (顺便说一句,所有提到的文件都在我的路径中) 我有一个名为test.py的简单python脚本:使用sys.argv将命令行参数传递给python脚本,python,batch-file,cmd,Python,Batch File,Cmd,我知道这个问题有各种各样的问题,但似乎没有一个适合我的具体情况: (顺便说一句,所有提到的文件都在我的路径中) 我有一个名为test.py的简单python脚本: import sys print('Hello world!') print(sys.argv) counter = 0 while True: counter +=1 计数器只是用来打开命令窗口的,所以不用担心 我进去的时候 test.py test test 在cmd中,我得到以下输出: Hello world
import sys
print('Hello world!')
print(sys.argv)
counter = 0
while True:
counter +=1
计数器只是用来打开命令窗口的,所以不用担心
我进去的时候
test.py test test
在cmd中,我得到以下输出:
Hello world!
['C:\\Users\\path\\to\\test.py']
由于我不知道的原因,缺少另外两个命令(sys.argv[1]和sys.argv[2])
但是,当我创建这样的.bat文件时:
@C:\Users\path\to\python.exe C:\Users\path\to\test.py %*
在cmd中调用它
test.bat test test
我得到了我想要的输出:
Hello world!
['C:\\Users\\path\\to\\test.py', 'test', 'test']
我读过那本书
%*
在.bat文件中,这意味着所有命令行参数都传递给python脚本,但为什么在cmd中显式调用python脚本时,这些参数没有传递给python脚本呢
从我所读到的内容来看,在脚本名称之后输入的所有命令行参数都应该传递给所述脚本,但由于某些原因,它不能以这种方式工作
我在这里忽略了什么?我猜您实际上需要使用
C:\Users\path\to\python.exe test.py test
通过命令行运行脚本
我不确定Windows如何处理
test.py test
,但根据我有限的经验,它可能只是试图打开所有3个文件。因为第一个(test.py
)有一个.py
扩展,所以它是用Python解释器打开的,并自动运行。其他两个实际上没有作为参数传入。我猜您需要使用C:\Users\path\to\python.exe test.py test
通过命令行实际运行脚本
我不确定Windows如何处理
test.py test
,但根据我有限的经验,它可能只是试图打开所有3个文件。因为第一个(test.py
)有一个.py
扩展,所以它是用Python解释器打开的,并自动运行。其他两个实际上没有作为参数传入。C:\Users\path\to\python.exe test.py test
不幸的是,测试不起作用<代码>C:\Users\path\to\python.exe C:\Users\path\to\test.py test但是工作得很好。为什么我最初的操作方式没有通过“test test”作为参数?原始命令不起作用,因为您没有运行test.py
,使用这两个参数,您告诉windows打开三个名为test.py
、test
和test
的文件。只有第一个存在,因此windows会打开它。我猜打开.py
文件时的默认行为是运行它(在本例中没有参数),我认为这是有意义的。但是,遗憾的是,即使脚本位于path变量中,也必须键入整个路径。您不需要在路径中包含脚本(事实上,不建议这样做)。标准做法是将python可执行文件放入路径中,然后将cd
放入包含脚本的正确目录中。因此,cd folder\containing\test.py\file
之后,您可以运行python test.ty test
。如果您保持CMD打开,那么您只需要在开始时将cd
放入正确的目录中一次。我刚刚尝试了一下,效果非常好。非常感谢。C:\Users\path\to\python.exe test.py test
很遗憾,测试失败<代码>C:\Users\path\to\python.exe C:\Users\path\to\test.py test但是工作得很好。为什么我最初的操作方式没有通过“test test”作为参数?原始命令不起作用,因为您没有运行test.py
,使用这两个参数,您告诉windows打开三个名为test.py
、test
和test
的文件。只有第一个存在,因此windows会打开它。我猜打开.py
文件时的默认行为是运行它(在本例中没有参数),我认为这是有意义的。但是,遗憾的是,即使脚本位于path变量中,也必须键入整个路径。您不需要在路径中包含脚本(事实上,不建议这样做)。标准做法是将python可执行文件放入路径中,然后将cd
放入包含脚本的正确目录中。因此,cd folder\containing\test.py\file
之后,您可以运行python test.ty test
。如果您保持CMD打开,那么您只需要在开始时将cd
放入正确的目录中一次。我刚刚尝试了一下,效果非常好。非常感谢你。