Обновление / Решение: ответ ниже, от Зак .Проблема, действительно, заключалась в конце строки DOS в самом файле скрипта, clenotes.cmd.Так как я много занимался различными файлами, я удалил весь каталог, а затем заново загрузил свежую копию из ЗДЕСЬ .Я запустил perl-скрипт Zack'а для файла следующим образом:
perl -pi.bak -e 's/[ \t\r]+$//' clenotes.cmd
Затем я слегка отредактировал выполнение команды так, чтобы окончательный сценарий стал:
CWD=`dirname $0`
JYTHON_HOME="$CWD"
LIB_DIR="$JYTHON_HOME/lib"
NOTES_HOME="/opt/ibm/lotus/notes/"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NOTES_HOME
java -cp "$LIB_DIR" -jar "$LIB_DIR/jython.jar" -Djython.home="$CWD/" -Dpython.path="$LIB_DIR:$CWD/ext" -Djava.library.path="$NOTES_HOME" "$LIB_DIR/clenotes/cletes/clenotes.py" "$@"
Вот и все -все остальное работало.Никаких правок, необходимых для clenotes.py или clenotes.cfg, не требуется.Большое спасибо за то, что остались с вопросом, который, как мне кажется, оказался довольно простым.
Обновление: Я сокращаю часть кода, чтобы сделать его более читабельным иудалите ненужную информацию из поста.
Я пытаюсь заставить командную строку Lotus Notes работать на Linux и у меня возникла проблема с чем-то связанным с sys.argv [1:] в файле Python.Сценарий Windows находится здесь:
@echo off
@setlocal
set CWD=%~dp0
set JYTHON_HOME=%CWD%
set LIB_DIR=%JYTHON_HOME%/lib
java -cp %LIB_DIR% -jar %LIB_DIR%/jython.jar -Djython.home=%CWD% -python.path=%LIB_DIR%;%CWD%/ext %LIB_DIR%/clenotes/clenotes.py %*
@endlocal
Мне было тяжело с переменными, поэтому для Linux это выглядит просто так:
java -cp ./lib/ -jar ./lib/jython.jar -Djython.home=./ -Dpython.path=./lib:./ext -Djava.library.path=/opt/ibm/lotus/notes/ ./lib/clenotes/clenotes.py $*
Я запускаю его из каталога,В любом случае, меня озадачивает то, что он не выбирает какие-либо параметры, которые я передаю из командной строки.clenotes.cmd --help
приводит к
No commands specified. Use --help option for usage.
Вот раздел, где предполагается анализировать аргументы командной строки:
def main():
Output.log("Entering %s v%s" % (PROGRAM_NAME,VERSION),Output.LOGTYPE_DEBUG)
cliOptions2=[]
for opt in cliOptions:
opt2=opt.replace('--','')
opt2=opt2.replace('!','=')
cliOptions2.append(opt2)
opts=[]
args=[]
try:
opts, args = getopt.getopt(sys.argv[1:], '', cliOptions2)
Я использую Python 3.1.3 в Arch Linux 64bitв 32-битной среде chroot.Могу ли я предоставить что-нибудь еще?
На всякий случай, если это необходимо ... ЗДЕСЬ - это весь файл clenotes.py.
Кроме того, как было запрошено в комментариях,Конфигурационный файл (который содержит справочное сообщение и возможные параметры / аргументы, ЗДЕСЬ
Обновление
После долгих хлопот,Наилучший прогресс, который я достиг, - это проверить, что он устанавливает как opts и args в (main) методе. Самым удивительным было то, что при передаче аргумента и последующем просмотре его проанализированного результата с использованием print sys.argv
, опция получитв нем тянется \r
. Например:
clenotes.cmd appointments
args is ['appointments\r']
В Windows я сделал то же самое, и аргументы были указаны как ['appointments']
. Кроме того, вручную установил args=['appointments']
, а затем закомментировал раздел, где getopt.getopt
присваивает сработавшее значение.
Наконец, я обнаружил, что при использовании нескольких аргументов n-1 из них интерпретируется и используется, а n-й игнорируется. Это вид обходной путь, так как я могуиспользовать сценарий ... но, очевидно, это не является предпочтительным.Если я хочу посмотреть на сегодняшние встречи, я могу выполнить clenotes.cmd appointments --today --today
, и это сработает.sys.argv
выплюнет: ['appointments', '--today', '--today\r']
.
Итак ... что вызывает трейлинг \r
?Я думаю, что это связано с реальным сценарием.Запомните еще раз:
java -cp ./lib/ -jar ./lib/jython.jar -Djython.home=./ -Dpython.path=./lib:./ext -Djava.library.path=/opt/ibm/lotus/notes/ ./lib/clenotes/clenotes.py $*
Итак ... куча путей, а затем фактический файл python: clenotes.py $*
Я получил $*
от ЗДЕСЬ
Это забирает возврат каретки ??