假设我这样做
os.system("python test.py --desc=" +str(description))
描述是一个文本正文。当我运行它时,它不会使用此输入绑定整个字符串。例如,如果
description = "hello world"
我运行它,它会将输入视为hello,然后将“world”错误地视为非预期的参数。
有没有一种简单的方法可以将这整个事情传递给它而没有这样的问题?
答案 0 :(得分:0)
尝试:
os.system('python test.py --desc="' + str(description) + '"')
由于从命令行运行脚本时将使用python test.py --desc="Hello World"
,因此需要包含这些引号。
答案 1 :(得分:0)
只有当您知道输入不会包含引号或其他特殊字符时,其他答案才有效。一个更好的解决方案,但仍然不完美,是:
os.system('python test.py --desc="' + str(description).encode('string_escape') + '"')
这应该用"
取代\"
,用\n
取代换行等等。不过,我不确定更多不寻常的控制字符的转义是否与shell匹配。
答案 2 :(得分:0)
call
模块中的subprocess
函数执行os.system
所做的事情,但它采用参数列表而不是字符串。如果您使用它,则不需要引用命令字符串。例如,您的代码可以重写为:
from subprocess import call
call(["python", "test.py", "--desc=" + str(description))
你不必对description
做任何特别的事情。它将被传递到sys.argv[1]
,即使它包含空格。