我是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
答案 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)
等等