Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2016, 18:49   #1
mrprim
Пользователь
 
Регистрация: 07.06.2016
Сообщений: 52
По умолчанию Передача значения параметром командной строки

После данной темы по обработке расширений файлов:
http://www.programmersforum.ru/showt...54#post1626954

У меня стала острая необходимость в приёме файла не с ввода с клавиатуры напрямую. А при запуске файла с параметром, например:


Цитата:
Файл 1.py
PHP код:
class FilesWork(object):
        
def __init__(selfstr):
                
str str.replace(' ''')
                
word str.split(".")
                
FILE_NAME word[0]
                
FILE_EXE word[1]
        if 
FILE_EXE ==".uuu":
                print 
"access"
if __name__ == '__main__':
        
_FilesWork FilesWork() 
и второй
Цитата:
Файл 2.py
PHP код:
def main():
        while 
1:
                
s=raw_input(">>")
                
s.replace(' ''')
.....

if 
__name__ == '__main__':
        
main() 

так вот мне нужно сделать так что бы во втором файле он ждал ждал ждал... И если я введу 1.py [filename.uuu] то запустился первый файл с параметром, а если 1.py [без параметра] то выскакивала подсказка

собственно непонятно только как запускать первый файл из второго с параметром, уже всё переискал
mrprim вне форума Ответить с цитированием
Старый 17.08.2016, 19:16   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

sys.argv
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.08.2016, 19:19   #3
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

PHP код:

# -*- coding: utf-8 -*-

import sys

# ===========================================
class TestClass(object):

    
def __init__(selfarg):
        print(
"TestClass: ["+arg+"]");

# ===========================================
if __name__ == '__main__':
    
    for 
arg in sys.argv:
        print(
"arg: ["+arg+"]");


    
_TestClass TestClasssys.argv ); 

из консоли запускается так:

Код:
python ./TestClass.py file_1.txt file_2.txt file_3.txt // хоть десять
в программе в таком случае будет так

PHP код:

sys
.argv[0]; // <= TestClass.py
sys.argv[1]; // <= file_1.txt
sys.argv[2]; // <= file_2.txt
sys.argv[3]; // <= file_3.txt 
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 17.08.2016 в 19:22.
pompiduskus вне форума Ответить с цитированием
Старый 17.08.2016, 19:50   #4
mrprim
Пользователь
 
Регистрация: 07.06.2016
Сообщений: 52
По умолчанию

Цитата:
Сообщение от pompiduskus Посмотреть сообщение
PHP код:

# -*- coding: utf-8 -*-

import sys

# ===========================================
class TestClass(object):

    
def __init__(selfarg):
        print(
"TestClass: ["+arg+"]");

# ===========================================
if __name__ == '__main__':
    
    for 
arg in sys.argv:
        print(
"arg: ["+arg+"]");


    
_TestClass TestClasssys.argv ); 

из консоли запускается так:

Код:
python ./TestClass.py file_1.txt file_2.txt file_3.txt // хоть десять
в программе в таком случае будет так

PHP код:

sys
.argv[0]; // <= TestClass.py
sys.argv[1]; // <= file_1.txt
sys.argv[2]; // <= file_2.txt
sys.argv[3]; // <= file_3.txt 

При запуске в чистом файле выбивает ошибку
Код:
Traceback (most recent call last):
  File "C:/MyBasicPy/TestClass.py", line 19, in <module>
    _TestClass = TestClass( sys.argv )
  File "C:/MyBasicPy/TestClass.py", line 13, in __init__
    print ("TestClass: ["+arg+"]")
TypeError: cannot concatenate 'str' and 'list' objects
а еще вопрос, если файл называется по другому то запуск проходит так же?
/1.py/TestClass 1file.txt
mrprim вне форума Ответить с цитированием
Старый 17.08.2016, 19:56   #5
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Прошу прощения, я ошибку допустил!

PHP код:


# -*- coding: utf-8 -*-

import sys

# ===========================================
class TestClass(object):

    
def __init__(selfarg):
        print(
"TestClass: ["+str(arg)+"]");

# ===========================================
if __name__ == '__main__':
    
    for 
arg in sys.argv:
        print(
"arg: ["+arg+"]");


    
_TestClass TestClasssys.argv ); 

предположим что файл называется "MyPythonScript.py" и в нем код который выше, то запускать так

Код:
python MyPythonScript.py A.file B.file
Но важно помнить что если я обращаюсь к елементу array[2] а у меня его нету, будет ошибка!

под какой OS выполняешь ?
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 17.08.2016, 20:12   #6
mrprim
Пользователь
 
Регистрация: 07.06.2016
Сообщений: 52
По умолчанию

Цитата:
Сообщение от pompiduskus Посмотреть сообщение

предположим что файл называется "MyPythonScript.py" и в нем код который выше, то запускать так

Код:
python MyPythonScript.py A.file B.file
Но важно помнить что если я обращаюсь к елементу array[2] а у меня его нету, будет ошибка!

под какой OS выполняешь ?
Файл у меня называется TestClass.py класс внутри него так же, но при запуске >>>> TestClass.py A.file B.file
выбивает Syntasys error
mrprim вне форума Ответить с цитированием
Старый 17.08.2016, 20:19   #7
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Давай упростим, что-бы лишнего не делать, ато я не знаю зачем я класс для примера приписал


PHP код:

# -*- coding: utf-8 -*-

import sys

# ===========================================
if __name__ == '__main__':
    
    for 
arg in sys.argv:
        print(
"arg: ["+arg+"]"); 
ты под какой OS ?

У меня вот как выводит

Код:

toor@tr:/tmp$ python script_name.py file1 file2 file3
arg: [script_name.py]
arg: [file1]
arg: [file2]
arg: [file3]
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 17.08.2016, 20:29   #8
mrprim
Пользователь
 
Регистрация: 07.06.2016
Сообщений: 52
По умолчанию

Цитата:
Сообщение от pompiduskus Посмотреть сообщение
Давай упростим, что-бы лишнего не делать, ато я не знаю зачем я класс для примера приписал


PHP код:

# -*- coding: utf-8 -*-

import sys

# ===========================================
if __name__ == '__main__':
    
    for 
arg in sys.argv:
        print(
"arg: ["+arg+"]"); 
ты под какой OS ?

У меня вот как выводит

Код:

toor@tr:/tmp$ python script_name.py file1 file2 file3
arg: [script_name.py]
arg: [file1]
arg: [file2]
arg: [file3]
у меня под винду, я помню что у тебя под линукс.
при вводе в строку python TestClass.py file1 file2 file3
У меня тупо выбивает
SyntaxError: invalid syntax
mrprim вне форума Ответить с цитированием
Старый 17.08.2016, 20:38   #9
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Проверь что-бы у тебя были все табы или все пробелы, питон он такой. Не любит когда у него и табы и пробелы


Так
PHP код:
import sys

# ===========================================
if __name__ == '__main__':
    
[\
s\s\s\s]for arg in sys.argv:
[\
s\s\s\s][\s\s\s\s]print("arg: ["+arg+"]"); 
Или так

PHP код:
import sys

# ===========================================
if __name__ == '__main__':
    
TAB ]for arg in sys.argv:
TAB ][ TAB ]print("arg: ["+arg+"]"); 
И еще может убери эту строку, я не знаю как под виндой он ее воспринемает.


Код:
# -*- coding: utf-8 -*-
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 17.08.2016, 20:43   #10
mrprim
Пользователь
 
Регистрация: 07.06.2016
Сообщений: 52
По умолчанию

код верный, видимо строка ввода в консоль - неверная "python TestClass.py file1 file2 file3" уже по всякому пробовал, странно
mrprim вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача массива параметром процедуры Var17 БД в Delphi 0 31.05.2012 11:53
Asm. Передача параметров командной строки. Adverse Помощь студентам 0 15.04.2012 19:42
Передача в параметр процедуры. Робота с параметром Delphi_ProGer Помощь студентам 1 21.12.2011 02:00
передача параметров программе при запуске из командной строки shurik_7866 Общие вопросы Delphi 3 03.06.2009 18:23
Передача параметров в командной строке RUBEY Общие вопросы Delphi 1 12.01.2009 18:57