Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 24, 2016 09:15:51

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Командная строка

Firik
А если экранировать пробелы?
Ну попробуйте. Правда так кавычек будет много. Меня давно задолбали эти пляски с бубном. У меня вообще нет путей с пробелами. :) В спецификации на ПО в самом начале пишем что это недопустимо.

Тем более что никакой реальной потребности в пробелах нет. Надо визуально отделить, сделайте подчеркивание. Я предпочитаю придерживаться четких правил. Одно из них: название файла - единое целое, как визуально так и с точки зрения программ (всякие там splt разбивают строку по пробелам и им нет никакого дела до нечетких правил с кавычками).

Допустимость пробелов в именах файлов (как windows так и unix) думаю повлекла такие потери рабочего времени, что можно было второй город такой как Москву построить. Сначала один человек вообще без всякой необходимости ставит пробел в имени файла, а потом миллионы в командной строке вынуждены кавычки расставлять, тильдочки обратные слеши, слеши надо экранировать кавычечками, кавычечки бывают разные, иногда и смысл у них разный, в программах надо изобретать хитроумные способы выделения пути, вплоть до проверки существования файла на диске. И все ради чего?



Отредактировано doza_and (Янв. 24, 2016 09:34:00)

Офлайн

#2 Янв. 24, 2016 10:33:38

Maxem
Зарегистрирован: 2016-01-23
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Командная строка

doza_and
К сожалению не помогло, выдает ошибку без сообщения.
Firik
doza_andА если экранировать пробелы? Как пишут: "Для того, что бы командная оболочка правильно трактовала имена с пробелами необходимо их экранировать в кавычки, например так:
почему тогда работает это?
import os
command = r'"C:\\Program Files (x86)\\1cv8\\common\\1cestart.exe"'
os.system(command)

Отредактировано Maxem (Янв. 24, 2016 10:33:56)

Офлайн

#3 Янв. 24, 2016 10:46:23

Maxem
Зарегистрирован: 2016-01-23
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Командная строка

Не знаю почему, но именно так заработало

import os
command = r'"C:\\Program Files (x86)\\1cv8\\common\\1cestart.exe" CREATEINFOBASE File=e:\\test8 /AddInList TEST8 /UseTemplate E:\\Share\\Python\\1C\\CFs\\Acc\\2\\1Cv8.cf'
os.system(command)
так тоже пашет
import os
command = r'"C:\Program Files (x86)\1cv8\common\1cestart.exe" CREATEINFOBASE File=e:\test9 /AddInList TEST9 /UseTemplate E:\Share\Python\1C\CFs\Acc\2\1Cv8.cf'
os.system(command)

Отредактировано Maxem (Янв. 24, 2016 10:51:44)

Офлайн

#4 Янв. 24, 2016 13:06:30

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Командная строка

Maxem
К сожалению не помогло, выдает ошибку без сообщения.
Сообщение есть, просто команда выполняется без консоли… Легко посмотреть что было если перенаправить вывод
sp.check_call("some 1>1 2>2")
Если ошибка на стороне питона то будет traceback
Maxem
Не знаю почему
Разбирайтесь. Так оно в любой момент откажет и не почините.

На первый взгляд у вас
r'"C:\\Program Files (x86)"
сырые строки и двойные бекслеши. Значит в команду уходят удвоенные бекслеши Зачем?
Ваши тесты хаотически отличаются друг от друга.
  • File=e:\\test8 File=e:\\test4 зачем меняете имя теста?
  • File=e:\\test4; Вы уж определитесь по документации нужна точка с запятой или нет
  • “E:\\Share\\Python” По идее не влияет, но зачем то ставить кавычки то нет?
С эффектами надо по возможности разбираться отдельно. Если будете менять все подряд, то не сможете понять что влияет на работу.



Офлайн

#5 Янв. 24, 2016 13:35:03

Maxem
Зарегистрирован: 2016-01-23
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Командная строка

doza_and
File=e:\\test8 File=e:\\test4 зачем меняете имя теста?
ибо я параллельно проверял тоже самое в ком строке напрямую
doza_and
File=e:\\test4; Вы уж определитесь по документации нужна точка с запятой или нет
Убрал и ничего не поменялось
doza_and
“E:\\Share\\Python” По идее не влияет, но зачем то ставить кавычки то нет?
Кавычки в конце команды убрал и заработало, а стояли на случай пробелов в пути для универсальности расположения шаблонов

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version