我的python代码有什么问题?

时间:2010-10-04 11:54:20

标签: python

有人能告诉我这段代码有什么问题:

#!/usr/local/bin/python

import os
import string, sys

a='sys.argv[1]'
b='sys.argv[2]'
os.system("scp a:/export/home/sample/backup.sql  b:/home/rushi/abc.sql")

它给出了以下错误:

ssh: a: node name or service name not known

4 个答案:

答案 0 :(得分:5)

出了什么问题:

  1. ab没有您想要的sys.argv的第二和第三个值
  2. abos.system电话
  3. 无关
  4. 您正在使用os.system
  5. 您正在导入您未使用的模块
  6. 如何解决:

    1. 使用不带引号的a = sys.argv[1]b相同。
    2. 使用.format方法或类似%格式化字符串
    3. 查看subprocess模块
    4. 不导入string

答案 1 :(得分:2)

第一行的第一个字符应为#

答案 2 :(得分:1)

您已将名称“a”和“b”绑定到命令行上传递的参数(实际上,如果您在等号后删除了引号,则可以这样做)。

但是在你正在执行的命令中,你没有使用它们,你正在使用文字“a”和“b”驱动器。 这是一种危险的方法,因为您有注射风险。在任何情况下,如果您信任输入的来源,则可以转义a和b的值,例如

os.system("scp %s:/export/home/sample/backup.sql  %s:/home/rushi/abc.sql" % (a, b))

这不是推荐的方法。

答案 3 :(得分:1)

您的代码应更改为此

a=sys.argv[1]
b=sys.argv[2]

由于您现在通过添加引号

将sys.argv [1]视为字符串

你也想这样做:

os.system("scp %s:/export/home/sample/backup.sql  %s:/home/rushi/abc.sql" % (a,b) )

以便将变量添加到您尝试使用os.system调用的字符串