繁体   English   中英

将命令行参数传递给子流程模块

[英]Passing command line argument to subprocess module

我有一个python脚本,它使用子进程模块调用perl脚本。

在终端中,我像这样运行perl脚本

perl email.pl raj@gmail.com

我传入raj@email.com作为该脚本的命令行参数

这是我的Python脚本

import subprocess

pipe = subprocess.Popen(["perl","./email.pl"])
print pipe

这很好

但是,如果我传递参数,则找不到文件

import subprocess

pipe = subprocess.Popen(["perl","./email.pl moun"])
print pipe

错误:

<subprocess.Popen object at 0x7ff7854d6550>
Can't open perl script "./email.pl moun": No such file or directory

在这种情况下,如何传递命令行参数?

该命令可以是字符串:

pipe = subprocess.Popen("perl ./email.pl moun")

或清单:

pipe = subprocess.Popen(["perl", "./email.pl", "moun"])

当它是列表时,Python将转义特殊字符。 所以当你说

pipe = subprocess.Popen(["perl","./email.pl moun"])

它呼吁

perl "./email.pl moun"

但是文件“ email.pl moun”不存在。

以上是一个粗略的解释,仅适用于Windows。 有关更多详细信息,请参见@ShadowRanger的评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM