Найти - Пользователи
Полная версия: Аргументы в командной строке
Начало » Python для новичков » Аргументы в командной строке
1
svs
Всем доброго времени суток.

Жизнь заставила обратиться к Питону.

Суть: есть проект на Питоне. Сборка инсталлятора запускается питоновским сценарием:
>setup.py build_install

Содержание
=============


import os.path
import os
import shutil
import time
import socket
import copy
import sys
import string
import subprocess
import zipfile as zip

class build_install(Command):
description = “create installer using NSIS”

user_options = [
('generic', None, ‘Build a generic installer.’),
('install-icon=', None, ‘ICO file to use for the installer.’),
('install-image=', None, ‘BMP file to use for the welcome/finish pages.’)
]

def run(self):
self.run_command('bdist_product')
self.dist_dir = self.get_finalized_command('py2exe').dist_dir

log.info(“building installer”)

self.copy_file(os.path.join(platform_dir, ‘product.nsi’), self.dist_dir)
self.copy_file(self.install_icon, self.dist_dir)
self.copy_file(self.install_image, self.dist_dir)
self.copy_file(“ToolbarSetup.exe”, self.dist_dir)
self.copy_file(“Toolbar.bmp”, self.dist_dir)
…….
==============

self.copy_file(“ToolbarSetup.exe”, self.dist_dir)
self.copy_file(“Toolbar.bmp”, self.dist_dir)

вот эти аттрибуты являются переменными и хотелось бы их передавать как аргументы, что то типа:

>setup.py build_install ‘E:\Data\ToolbarSetup.exe’ ‘E:\Data\Toolbar.bmp’

Как это сделать?

Заранее спасибо.

PS. тока 2 дня с Питоном
py.user.next
import sys

print(len(sys.argv), sys.argv)
svs
Спасибо.
Это понятно.

Передавать, передавал и выводил:
———————
for argument in sys.argv:
print argument

print “Number of arguments:”, str(len(sys.argv))

x=0
while x < len(sys.argv):
print "sys.argv =", sys.argv
x+=1
———————

но при этом выдает ошибку:
————————-
E:\platform>setup.py build_install param1
E:\platform\setup.py
build_install
param1
Number of arguments: 2
sys.argv = E:\platform\setup.py
sys.argv = build_install
sys.argv = param1
*** copying locale files ***
usage: setup.py cmd1 [cmd2 …]
or: setup.py –help
or: setup.py –help-commands
or: setup.py cmd –help

error: invalid command ‘param1’
————————-

Почему аргумент воспринимается как command?

Значение этого аргумента мне надо использовать в def run(self):
PooH
Все уже украдено до нас: import optparse
Андрей Светлов
PooH, слегка не то советуете. В distutils свой парсер, и прийдется работать с ним.
svs, в вашем примере уже есть install_icon и install_image. Сделайте по аналогии.
py.user.next
svs
Почему аргумент воспринимается как command?
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
ну вызови ради эксперимента
E:\platform>setup.py cmd1 build_install param1
если она скажет, что cmd1 - это не параметр (global_opts), значит build_install - параметр (global_opts)
тогда и param1 попадает на место команды (в том первом случае)
svs
Андрей Светлов
Спасибо всем. А всего то надо было …. ))))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB