我想在一个python程序中使用一个C-shell脚本,它使用两个参数
os.system("recall 20170121 ../E725.txt xy 1")
但是我想将它用于堆栈,所以声明了如下所示的变量,但是当我在脚本中调用它们时,它给出了一个错误,即输入文件不存在。如何调用变量
date_ID=(filename[17:25])
fullpath = '../%s' % (filename)
os.system("import_S1_TOPS_modified $date_ID $fullpath vv 1")
Tags:
shell不知道Python变量,因为它是一个完全不同的系统。因此不能使用shell的变量替换机制(
$date_ID
)。相反,您必须将它们作为Python字符串传递:注意,这段代码有一个严重的问题:如果有人把
; rm -rf /;
作为filename
怎么办?该命令现在看起来像:这将删除所有内容
这就是为什么使用
subprocess
是一个更好的主意,它根本不会使用shell,也不会受到此类问题的影响:如果必须使用shell,则使用
shlex.quote()
并添加shell=True
:相关问题 更多 >
编程相关推荐