@propython

Страница 47 из 228
Pepe
12.05.2017
08:56:53
Не могу понять почему когда я делаю print (string), потом копирую результат в cmd то все работает и запускается программа с параметрами, а когда я делаю os.system(string) что то идёт не так. Программа вызывается но параметры не корректно передаются

Как вообще посмотреть что передается в os.system?

Aletheia
12.05.2017
09:13:08
Pepe
12.05.2017
09:14:51
print(os.system(string))? Или help*
Оно ничего не выдает

Google
Pepe
12.05.2017
09:14:53
-1

Код ошибки видимо

zhizha
12.05.2017
09:15:47
Может из за /н

\n

Олег
12.05.2017
09:16:13
Как вообще посмотреть что передается в os.system?
Можно написать скрипт, который будет выводить sys.argv. Запусти его через os.system, чтобы посмотреть, как передаются аргументы.

Pepe
12.05.2017
09:16:33
Может из за /н
У меня такого нет. Если я просто принт сделаю то все правильно

zhizha
12.05.2017
09:16:52
Print сам добавляет в питоне

Pepe
12.05.2017
09:16:54
У меня такого нет. Если я просто принт сделаю то все правильно
Мне просто надо эту строку в cmd передать но это невозможно

zhizha
12.05.2017
09:17:01
В конец строки

А копируешь без этого символа

Pepe
12.05.2017
09:17:26
В конец строки
Ок, но я передаю не os.system(print(string))

Я передаю os.system(string)

То есть там нет \n и string это точно то что я хочу в cmd передать

Google
zhizha
12.05.2017
09:19:58
Понял,а в сабпроцесе норм все?

Pepe
12.05.2017
09:20:53
zhizha
12.05.2017
09:22:06
stderr глянь

Pepe
12.05.2017
09:24:12
stderr глянь
Спасибо посмотрю

Ад конечно этот питон надо было на С++ делать

zhizha
12.05.2017
09:25:43
Запусти гцц или че там у тя в os.system()

Pepe
12.05.2017
09:27:52
Запусти гцц или че там у тя в os.system()
У меня только блокнот. И это в винде

zhizha
12.05.2017
09:29:03
Бля)

А в стринге у тебя полный путь?

Pepe
12.05.2017
09:29:58
Но даже если поменять директорию и сделать относительный ничего не меняется

Программа запускается правильно

Но ей что то не то передается

Os.system('C:/path/executable.exe -param1 ./'+filename+' param2')

И принтом то что надо выводится и работает

zhizha
12.05.2017
09:35:11


Pepe
12.05.2017
09:35:45
Двойный бэкслэши тоже самое дают

Хотя я не понял что там предлагается

\" это добавить?

Google
zhizha
12.05.2017
09:37:26
Пц какой то)



А че за аппа то?)

Pepe
12.05.2017
09:41:14
А че за аппа то?)
какая то пропрайетарная хрень от вендора

Симулятор какой то

zhizha
12.05.2017
09:42:27
Тут ещё винапи32 предлагают юзать

Pepe
12.05.2017
09:42:44
Питон просто кривой

Какие то долбоебы делали

Нельзя строку передать в cmd

Олег
12.05.2017
09:43:14
Питон просто кривой
Скорее винда такая :P

Олег
12.05.2017
09:43:26
Венда говно

zhizha
12.05.2017
09:43:27
Pepe
12.05.2017
09:44:03
Венда говно
Для другого чата тема но винда не причем. Если питон не может строку передать то значит это питон

Pepe
12.05.2017
09:44:38
Или программист
Программист питона.

Олег
12.05.2017
09:45:05
Питон программиста *if you know what i mean*

Можно написать скрипт, который будет выводить sys.argv. Запусти его через os.system, чтобы посмотреть, как передаются аргументы.

Но ей что то не то передается
Надо определить хотя бы, как оно передается

Google
zhizha
12.05.2017
09:46:58
Пиши на сях

Pepe
12.05.2017
09:47:03
Нафиг не нужен этот язык с тупыми фичами

List comprehension ничего не облегчает и не укорачивает

zhizha
12.05.2017
09:48:00
ptpython юзал кто нить?как оно?

Pepe
12.05.2017
12:33:37
Решил проблему на оверфлоу помогли. Короче если ввести команду в cmd потом скопировать строку в питоноскрипт оно работает. Если сделать в питоноскрипте как я сначала, распечатать и скопировать в cmd то тоже работает. Но если во втором случае запускать через os.system или subprocess.call то ничего не работает. Почему я уже не стал разбираться, говно какое то

Короче os и subprocess как то калечат некоторые строки

Sergei
12.05.2017
12:36:07
Короче os и subprocess как то калечат некоторые строки
там в аргументы передавать надо неэкранированные строчки

может в этом проблема?

если ты сам передаешь в кавычках, а он еще свои подставляет. помню натыкался на это.

Еще надо учитывать, что там есть лимит на длину команды.

Pepe
12.05.2017
12:37:12
там в аргументы передавать надо неэкранированные строчки
Не знаю что такое экранированные. Я разные пробовал с разными слэшами и без слэшей вообще просто из той папки. Результат один файл запускался но какие то параметры не передавались

Sergei
12.05.2017
12:38:15
Высылай код. Либо если динамически аргументы передаешь, то скрин вызова функции из отладчика

@scaredpepe

Pepe
12.05.2017
12:39:07
Высылай код. Либо если динамически аргументы передаешь, то скрин вызова функции из отладчика
http://stackoverflow.com/questions/43935558/how-to-pass-a-string-to-cmd-from-python?noredirect=1#comment74907120_43935558

Вот тут ещё коменты посмотри

Это мой вопрос

Sergei
12.05.2017
12:42:14
subprocess.call("C:/path_to_exe/file.exe", "param1", "param2", "param3")

@scaredpepe

Google
Pepe
12.05.2017
12:44:01
subprocess.call("C:/path_to_exe/file.exe", "param1", "param2", "param3")
Так тоже не работало там в коментах есть

Сработало subprocess.call(r'....') Где за место многоточия я скопировал из cmd то что вручную ввел

Без параметров одной строкой

Sergei
12.05.2017
13:13:27
Дичь какая-то.

Скинь как пробовал вызывать

Pepe
12.05.2017
15:10:45
Скинь как пробовал вызывать
C:/path_to_exe/file.exe -param1 filename.bin param2

Из cmd так работало. И принт тоже самое из питона выдавал, а subprocess.call() не работал

Потом я вставил из cmd в питон subproces.call() процитировав эту строку и тоже заработало

Sergei
12.05.2017
15:27:01
Скинь всю строку с subprocess.call()

Pepe
12.05.2017
16:02:32
Скинь всю строку с subprocess.call()
rc = subprocess.call(r'C:/path_to_exe/file.exe -param1 '+param2+r' param3')

Вот рабочий вариант

Param2 = "filename.bin"

Ещё есть такое Snapshot_files = [os.path.join(dir,file) for dir, dirs, files in os.walk(os.getcwd()) for file in files if str_pattern in file]

Ещё есть такое Snapshot_files = [os.path.join(dir,file) for dir, dirs, files in os.walk(os.getcwd()) for file in files if str_pattern in file]
Можно сделать чтобы за один проход создавался массив snapshot_files и другой массив raw files для которого другое условие?



Пытался так но оно не работает . Вообще не понимаю как создаются массивы в питоне и объявляются переменные

Igor
12.05.2017
16:14:03
Массив создать: a = [] далее a.append(elem)

Страница 47 из 228