我尝试使用以下代码通过python执行Globus促进的文件传输:
get_task_id = subprocess.Popen(['ssh','gcw8@cli.globusonline.org','"transfer','-s','3','--','ep1#path/to/dir/','ep2#end/point/','-r"'],stdout=subprocess.PIPE)
从而产生错误:
^{pr2}$考虑到我可以成功运行,这很奇怪:
ssh gcw8@cli.globusonline.org "transfer -s 3 -- ep1#path/to/dir/ ep2#end/point/ -r"
据我所知,它在功能上等同于上面的python代码。我意识到Globus传输是深奥的,而且大多数人都不熟悉给定的命令,所以我想强调的是,我的问题更多地是关于为什么我的python代码生成的输出与bash代码的输出不同,因为它们应该执行相同的操作。在
此命令:
不等于:
^{pr2}$您的
subprocess.Popen
语句中有一些奇怪的引号。我想你只想:请记住,除非您引用其中的一部分,否则shell会基于空格将命令拆分为标记。因此,您的命令行最终被分成三个标记:
ssh
gcw8@cli.globusonline.org
transfer -s 3 ep1#path/to/dir/ ep2#end/point/ -r
所以这正是您需要传递给
subprocess.Popen()
的内容。在相关问题 更多 >
编程相关推荐