выполнение скрипта.

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
Изучаю питон по книге свейгарта при выполнении бат файла
@py.exe C:\MyPythonScripts\pw.py %*
@pause
он должен запустить скрипт pw.py и ждать когда я введу текст и "Ввод" а он вылетает при первом значении. Скрипта получается он не видит. Бат файл и скрипт находятся в одной папке.
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
что значит вылетает, какая ошибка?
возможно python.exe, а не py.exe
 

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
Скрипт
#! python3
# pw - Программа для незащищенного хранения паролей.

PASSWORDS = {'email': 'F7minlBDDuvMJuxESSKHFhTxFtjVB6', 'blog': 'VmAlvQyKAxiVH5G8v0liflMLZF3sdt', 'luggage': '12345'}

import sys, pyperclip
if len(sys.argv) < 2:
print('Использование: python pw.py [имя учетной записи] - копирование пароля учетной записи')
sys.exit()

account = sys.argv[1] # первое аргумент командной строки - это имя учетной записи

if account in PASSWORDS:
pyperclip.copy(PASSWORDS[account])
print(' Пароль для ' + account + ' скопировано в буфер.')
else:
print(' четная запись ' + account + ' отсутствует в списке.')
По теории он должен начать работать и выдать запрос на ввод accounta и после его ввода скопировать пароль в буфер а он просто отрабатывает что аккаунта нет и выходит из программы
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
код вставляйте как код, соблюдая отступы, подробнее тут как задать вопрос

По теории он должен начать работать и выдать запрос на ввод accounta
нет, аккаунт вы вводите в параметрах командной строки...

вы не правильно ищете в словаре, нужно искать по ключам или по значениям, или и в ключах и в значениях
пример
Python:
PASSWORDS = {'email': 'F7minlBDDuvMJuxESSKHFhTxFtjVB6', 'blog': 'VmAlvQyKAxiVH5G8v0liflMLZF3sdt', 'luggage': '12345'}

import sys, pyperclip
if len(sys.argv) < 2:
    print('Использование: python pw.py [имя учетной записи] - копирование пароля учетной записи')
    sys.exit()

account = sys.argv[1] # вводим F7minlBDDuvMJuxESSKHFhTxFtjVB6


if account in PASSWORDS.values(): # ищем по значениям
    pyperclip.copy(PASSWORDS['blog']) # копируем в буфер значение ключа blog
    print(' Пароль для ' + account + ' скопировано в буфер.')
else:
    print(' четная запись ' + account + ' отсутствует в списке.')
 

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
Если вводить через командную строку от понятно, ввожу сразу и ключ. А если через бат файл не совсем понятно где вставлять ключ и если возможно, что изменить чтобы он останавливался и ждал когда я введу ключ? Спасибо
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
А если через бат файл не совсем понятно где вставлять ключ
после имени скрипта, у вас же в самом скрипте подсказка есть...
Использование: python pw.py [имя учетной записи] - копирование пароля учетной записи'

что изменить чтобы он останавливался и ждал когда я введу ключ
в скрипте вместо account = sys.argv[1] напишите account = input("Введите имя учетной записи: ")
 

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
Изменил имя скрипта с pw.py на pw email.py и изменил пакетный файл на
@py.exe c:\MyPythonScripts\pw email.py %*
@pause
не помогает.

в скрипте вместо account = sys.argv[1] вставил account = input("Введите имя учетной записи: ") тоже не помогло
 

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
исправил на
#! python3
# pw - Программа для незащищенного хранения паролей.

PASSWORDS = {'email': 'F7minlBDDuvMJuxESSKHFhTxFtjVB6', 'blog': 'VmAlvQyKAxiVH5G8v0liflMLZF3sdt', 'luggage': '12345'}

import sys, pyperclip
account = input("Введите имя учетной записи: " )

if account in PASSWORDS:
pyperclip.copy(PASSWORDS[account])
print(' Пароль для ' + account + ' скопировано в буфер.')
else:
print(' четная запись ' + account + ' отсутствует в списке.')
теперь все работает
большое спасибо
 

Форум IT Специалистов