从命令行传递参数到python脚本

时间:2016-05-27 11:37:45

标签: python pandas

我是python和pandas的新手,我试图在命令行中使用参数执行python脚本,但是我收到错误,这是我的脚本

 #!/usr/bin/python
 import sys, pandas as pd

 df1 = pd.read_table(sys.argv[0], sep="\t", header=0)
 df2 = pd.read_table(sys.argv[1], sep="\t", header=0)

 df_merge = pd.merge(left=df1, right=df2, left_on=sys.arg[2],  right_on=sys.arg[3])
 df_merge.to_csv(sys.arg[4], sep="\t")

我收到以下错误:KeyError: u'no item named file.out',任何帮助都会被贬低

我的命令行语句是:merge_files.py file1.out file2.out col1 col3 test

3 个答案:

答案 0 :(得分:3)

sys.argv[0]是脚本的名称,即merge_files.py。您可以通过在脚本开头插入print(sys.argv)来查看此内容。尝试将所有指数增加1。

答案 1 :(得分:1)

第一个参数sys.argv[0]是脚本的名称。

  

<强> sys.argv中:   传递给Python脚本的命令行参数列表。   argv [0]是脚本名称(它是依赖于操作系统的   这是一个完整的路径名。)

请查看here了解详情。

#!/usr/bin/python
import sys, pandas as pd

df1 = pd.read_table(sys.argv[1], sep="\t", header=0)
df2 = pd.read_table(sys.argv[2], sep="\t", header=0)

df_merge = pd.merge(left=df1, right=df2, left_on=sys.arg[3],     right_on=sys.arg[4])
df_merge.to_csv(sys.arg[5], sep="\t")

这应该有用。

答案 2 :(得分:0)

将所有索引增加1,因为sys.argv[0] - 是python脚本的名称。

df1 = pd.read_table(sys.argv[1], sep="\t", header=0)
df2 = pd.read_table(sys.argv[2], sep="\t", header=0)

等等