Передача аргумента файла терминала в скрипт Python - PullRequest
0 голосов
/ 25 октября 2018

У меня есть файл с именем 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 голосов
/ 25 октября 2018

Как сказал @EricWang, вы можете сделать file = sys.argv[1], чтобы получить имя файла, если оно было включено.Тем не менее, существует ряд крайних случаев, к которым это не относится:

  • Этот код не будет выполнен, если пользователь забудет ввести аргумент
  • Этот код не будет выполнен, если у вас естьдругие аргументы, и пользователь не вводит их в определенном порядке
  • Этот код не будет выполнен, если аргумент не является допустимым именем файла или файл не существует.

Чтобы обойти это, я предлагаю вам использовать argparse .Это позволит вам назвать ваши аргументы, позволяя пользователю вводить их в любом порядке.Он имеет проверочный код, поэтому вы можете убедиться, что введенное имя файла является действительным файлом.Он также имеет концепцию «обязательных аргументов», поэтому, если ваш пользователь забудет ввести их, вы можете указать удобное сообщение об ошибке, чтобы сообщить им, как тупой ошибочны.

0 голосов
/ 25 октября 2018

Do file = sys.argv[1] вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...