将终端文件参数传递给python脚本

时间:2018-10-25 16:36:15

标签: python terminal

我有一个名为students.csv的文件,试图将其传递到python脚本s1.py中。在命令行上,我输入python3 s1.py students.csv,但是出现错误

File "s1.py", line 7, in <module>
    with open(file, 'r') as studentGrades:
TypeError: invalid file: ['s1.py', 'students.csv']

这是s1.py中的代码:

#!/usr/bin/env Python3

import sys

file = sys.argv

with open(file, 'r') as studentGrades:
        for line in studentGrades:
                print(line)

如何正确传递此文件,以便可以在python脚本中使用它?

2 个答案:

答案 0 :(得分:3)

改为使用Exception in thread "main" org.apache.flink.runtime.client.JobExecutionException: java.net.BindException: Cannot assign requested address: JVM_Bind

答案 1 :(得分:0)

正如@EricWang所说,您可以执行file = sys.argv[1]来获取文件名(如果包含的话)。但是,有许多无法说明的极端情况:

  • 如果用户忘记键入参数,则此代码将失败
  • 如果您有其他参数并且用户未按特定顺序键入代码,则此代码将失败
  • 如果参数不是有效的文件名或文件不存在,则此代码将失败。

要解决这些问题,我建议您使用argparse。这将使您能够命名参数,从而允许用户以任何顺序输入参数。它具有验证码,因此您可以确保他们输入的文件名是真实文件。它还具有“必需参数”的概念,因此,如果您的用户忘记输入它们,则可以指定方便的错误消息,以告知他们 dumb 被误导了。