PYTHON получает файлы из командной строки - PullRequest
36 голосов
/ 12 августа 2011

Как вы получаете имя файла из командной строки при запуске кода Python?Например, если ваш код открывает файл и читает строку, но файл меняется при каждом запуске, как вы говорите:

python code.py input.txt

, поэтому код анализирует «input.txt»?Что бы вы сделали в реальном коде Python?Я знаю, это довольно расплывчатый вопрос, но я не знаю, как объяснить это лучше.

Ответы [ 6 ]

41 голосов
/ 12 августа 2011

Отличным вариантом является модуль fileinput, который извлекает любое или все имена файлов из командной строки и передает содержимое указанных файлов вашему сценарию, как если бы они были одним большим файлом.

import fileinput
for line in fileinput.input():
    process(line)

Подробнее здесь .

28 голосов
/ 12 августа 2011
import sys
filename = sys.argv[-1]

Получит последний аргумент в командной строке.Если аргументы не переданы, это будет само имя скрипта, так как sys.argv[0] - это имя работающей программы.

15 голосов
/ 27 сентября 2016

Использование argparse довольно интуитивно понятно:

import argparse
parser = argparse.ArgumentParser()                                               

parser.add_argument("--file", "-f", type=str, required=True)
args = parser.parse_args()

Теперь имя файла находится в:

args.file

Вы просто должны запустить программу немного по-другому:

python code.py -f input.txt
9 голосов
/ 12 августа 2011

Параметры командной строки доступны в виде списка через список argv модуля sys . Первым элементом в списке является название программы (sys.argv[0]). Остальные элементы являются параметрами командной строки.

См. Также модули getopt , optparse и argparse для более сложного анализа командной строки.

1 голос
/ 19 октября 2017

В дополнение к тому, что упомянуто в уже существующих ответах, есть и другая альтернатива, основанная на использовании Kit Creation Interface Creation Kit (Click) .Его последняя стабильная версия на момент публикации этого ответа: версия 6 .Официальная документация содержит примеры того, как обращаться с файлами и передавать их в качестве аргументов командной строки.

0 голосов
/ 10 июня 2016

Просто используйте базовую команду raw_input

объявите имя входного файла в виде строки

inFile = ""
inFile = raw_input("Enter the input File Name: ")

Теперь вы можете открыть файл с помощью open(inFile,'w')

...