#python #batch-file #path #sys
Вопрос:
Я создал пользовательскую команду scan
для терминала Windows. Моя цель-автоматически переместить мои сканы в определенный каталог. Я жестко закодирую свой путь, но в случае, если я захочу переместить свои сканы в другой каталог, я включил параметр 2 (параметр 1 «запуск» для выполнения). Мой пакетный файл передает путь в виде строки в мой скрипт python.
Я знаю это, потому что, когда я пишу
scan start "C:/path/to/target/dir/"
в моем терминале Windows он выплевывает следующее, чтобы запустить мой скрипт.
python "C:UsersMY USERNAMEmy_scriptsscan.py" start C:/path/to/target/dir/
К сожалению, я не могу «прочитать» весь путь со следующим кодом:
print(Path(sys.argv[2]).stem)
В этом случае результатом является dir
print(Path(sys.argv[0]).stem)
= scan
print(Path(sys.argv[1]).stem)
= start
print(Path(sys.argv[2]).stem)
= dir
Почему я не получаю весь путь и как мне его получить? Я хочу что-то вроде этого:
print(Path(sys.argv[2]).stem)
= C:/path/to/target/dir/
Комментарии:
1. Почему вы используете
stem
? Он делает именно то, что вы показываете, т. Е. В полученном результате нет ничего неправильного/неожиданного; если вы хотите получить другие результаты, не используйтеstem
. Ознакомьтесь с документацией docs.python.org/3/library/…2. @barny, поскольку я новичок в prgramming и python, я не так хорошо знаком со многими доступными модулями, и мне трудно понять, откуда может возникнуть моя проблема. Теперь, когда вы упомянули об этом, я чувствую себя идиотом :D, Но я буду напоминать себе почаще читать документацию. Спасибо!
Ответ №1:
Вы действительно читаете весь путь. Но затем вы останавливаете его, сокращая до реж. Используйте следующее
print(Path(sys.argv[1]))