Python:希望使用Python中传递的命令行参数作为将在Python脚本中执行的另一个命令的参数

Python:希望使用Python中传递的命令行参数作为将在Python脚本中执行的另一个命令的参数,python,Python,我正在尝试编写一个python脚本,其中在传递给该脚本的参数中,需要用作将在此脚本中执行的命令的参数。 在cygwin上执行此脚本 例如:- x、 py文件1 在x.py脚本中: file = sys.argv[1] data = os.popen('ar t file').read() 执行此命令时,不会获取file的值(即file1),而是将“file”变量视为文件,因此引发错误:找不到文件名“file”。是否可以将file的值作为参数传递给此命令 谢谢, Akhilesh这与命令参数或

我正在尝试编写一个python脚本,其中在传递给该脚本的参数中,需要用作将在此脚本中执行的命令的参数。 在cygwin上执行此脚本

例如:- x、 py文件1

在x.py脚本中:

file = sys.argv[1]

data = os.popen('ar t file').read()
执行此命令时,不会获取file的值(即file1),而是将“file”变量视为文件,因此引发错误:找不到文件名“file”。是否可以将file的值作为参数传递给此命令

谢谢,
Akhilesh

这与命令参数或传递它们无关,而是对字符串的基本误解。您有一个包含单词“file”的硬编码字符串,实际上您并没有在任何地方传入
file
变量的值。可以使用字符串替换:

data = os.popen('ar t {}'.format(file)).read()


我认为应该是
data=os.popen('ar t“%s”%file).read()
,因为
file
是一个带有字符串的变量。另请注意
在使用空格处理文件名时,此句柄是否为“My New File.txt”?我想你需要引号(大约
%s
{}
)。。。除此之外,它应该是有效的。这是一个很好的观点,但这是一个单独的问题。实际上,OP根本不应该使用
os.popen
,而是
supprocess.call
,data=os.popen('ar t%s'%file.).read()这是可行的,但data=os.popen('ar t{}.format(file)).read()抛出了一个错误“格式中的文件名长度为零”
data = os.popen('ar t %s' % file).read()