Вызов функции Python с параметрами из скрипта оболочки -- python поле с участием linux поле с участием bash поле с участием shell пол Связанный проблема

Calling a python function with options from shell script


1
vote

проблема

русский

У меня есть сценарий Python, который принимает различные варианты из командной строки

e.g.

-Runs с графическим интерфейсом

 <код> python myscript.py -gui   

-Runs без требующих пользовательских запросов

 <код> python myscript.py -aut   

-Runs с входными данными, взятыми из ввода .py

 <код> python myscript.py input.py   

- и комбинации вышеуказанного E.g. Запускается автоматически, принимая вход от input.py

 <код> python myscript.py -aut input.py   

Я хотел бы позвонить это из любого места на моем коробке Linux. Как я могу это сделать? Я попробовал псевдоним в моем файле .bashrc, но используя этот метод, он не может принять какие-либо из параметров ввода. Я также пробовал

<Код> export PATH=$PATH:/path/to/folder/above_myscript/

Но это только распознает команду, если я ввожу myscript, а не python myscript. Набрав только MyScript, очевидно, не может запустить скрипт Python.

Я также попробовал написание сценария оболочки, который я мог позвонить.

 <код> #!/bin/bash #file: myscript.sh  python '/path/to/folder/above_myscript/myscript.py'   

Однако снова я также не могу пройти какие-либо варианты. Какое лучшее решение этой проблемы?

Английский оригинал

I have a python script which takes various options from the command line

e.g.

-runs with gui

python myscript.py -gui 

-runs without requiring user prompts

python myscript.py -aut 

-runs with input data taken from input.py

python myscript.py input.py 

-and combinations of the above e.g. runs automatically taking input from input.py

python myscript.py -aut input.py 

I would like to be able to call this from anywhere on my linux box. How can I do this? I have tried aliasing this in my .bashrc file, but using this method it is unable to accept any of the input options. I have also tried

export PATH=$PATH:/path/to/folder/above_myscript/

but this only recognises the command if I type myscript, not python myscript . Typing just myscript obviously is unable to run the python script.

I have also tried writing a shell script which I could call.

#!/bin/bash #file: myscript.sh  python '/path/to/folder/above_myscript/myscript.py' 

However, again I am also unable to pass any options to it. What is the best solution to this problem?

</div
           

Список ответов

4
 
vote
vote
Лучший ответ
 

Если вы добавите <код> #!/usr/bin/env python на вершину файла myscript.py и запустите <код> chmod +x myscript.py на нем, вы должны быть в состоянии запустить <код > myscript.py без необходимости ставить <код> python до него. Это должно позволить вам использовать <код> PATH изменяющий метод, который вы имели раньше.

 

If you add #!/usr/bin/env python to the top of your myscript.py file and run chmod +x myscript.py on it you should be able to run myscript.py without needing to put python before it. This should let you use the PATH changing method you had before.

</div
 
 
       
       
0
 
vote

Попробуйте:

 <код> python /path/to/folder/above_myscript/myscript.py   

Или это:

 <код> cd /path/to/folder/above_myscript && python myscript.py   

на вашем скрипте оболочки.

 

try this :

python /path/to/folder/above_myscript/myscript.py 

or this :

cd /path/to/folder/above_myscript && python myscript.py 

on your shell script.

</div
 
 

Связанный проблема

0  Как написать Pivot_Table в TXT файл Python  ( How to write the pivot table to txt file by python ) 
Я получаю pivot_table следующим образом: Есть места в таблице, Что я хочу написать на TXT: Как получить это? <код> WKWebView0 ...

0  Как умножить диагональные элементы друг другом, используя numpy?  ( How to multiply diagonal elements by each other using numpy ) 
Для целей этого упражнения давайте рассмотрим матрицу, где элемент <код> m_{i, j} дается правилом <код> m_{i, j} = i*j Если <код> i == j и <код > 0 else. ...

0  Использование Pybind11 на MacBook Pro  ( Using pybind11 on macbook pro ) 
Я пытаюсь использовать Pybind11 на MacBook, и я пытаюсь сделать так, как было написано в https://pybind11.readtheDocs.io/en/stable/basics.html я установил C...

0  Почему мой скрипт Cron работает только один раз?  ( Why my cron script running just once ) 
Я пытаюсь запустить простой сценарий Python, используя команды cron. Я написал код, чтобы запускать свой скрипт Python в каждом 1 минуте и записывать вывод в ...

25  Найти сломанные симличины с Python  ( Find broken symlinks with python ) 
Если я звоню <код> os.stat() на сломанный <код> 9988777663 , python бросает <код> OSError исключение. Это делает его полезным для их поиска. Тем не менее, е...

1  dataframe или sqlctx (sqlcontext) сгенерировали "попытка вызвать пакет" ошибка  ( Dataframe or sqlctx sqlcontext generated trying to call a package error ) 
Я использую Spark 1.3.1. В Pyspark я создал Dataframe от RDD и зарегистрировал схему, что-то вроде этого: <код> dataLen=sqlCtx.createDataFrame(myrdd, ["id",...

2  Spotipy Authentication не возвращает токен?  ( Spotipy authentication not returning token ) 
Все подходящие люди, я прочитал всю документацию, которую я могу найти в методах аутентификации Spotipy, и я собрал небольшой кусок кода, чтобы проверить его,...

2  Heroku Установить Letsencrypt - SU: ДОЛЖЕН БУДЬТ  ( Heroku install letsencrypt su must be run from a terminal ) 
Я пытаюсь создать сертификат SSL для Мой сайт , чтобы получить зеленый замок. . Во время передачи, как это сделать (никогда не делал ничего с сертификатами ...

12  Редактировать с помощью контекстного меню IDLE (Python GUI) в Windows & NBSP; 7  ( Edit with idle python gui context menu on windowsnbsp7 ) 
Под Windows XP у меня есть контекстное введение меню «Редактировать с простым» для python исходные файлы. Я пытался сделать эту работу под Windows 7 (32-бит...

0  Python получает глобальные модули вместо местных внутри виртуальны  ( Python is getting global modules instead of local ones inside of virtualenv ) 
Это мой первый раз, используя virtualenv и mysqldb, и я получаю странную ошибку. После того, как я настрою этот Virtualenv, я установил MySQLDB изнутри Virtua...

1  Используйте файл в качестве аргумента для функции, которая подсчитывает, создает счет для каждой буквы в текстовом файле  ( Use a file as an argument for a function that counts creates a count for each le ) 
Моя программа прямо сейчас работает только для первого символа в текстовом файле и итерации бесконечно. Например, если первая буква в текстовом файле D, прогр...

1  Cprofile принимает много памяти  ( Cprofile taking a lot of memory ) 
Я пытаюсь профилировать мой проект в Python, но у меня заканчивается память. Сам мой проект довольно памяти, но даже пробеги полумана с возможностью погибан...

3  Compile United с кодом ошибки 1 в / tmp / pip_build_root / uwsgi  ( Compile failed with error code 1 in tmp pip build root uwsgi ) 
Я пытаюсь следить за руководством в http: // uwsgi -docs.readtheDocks.org/en/latest/tutorials/django_and_nginx.html . Я получил все, что все работает TOHTTP:...

1  Python: Tkinter не отображает мой образ или интерфейс  ( Python tkinter not displaying my image or ui ) 
Я пытаюсь создать пользовательский интерфейс с изображением в правом верхнем углу. Вот мой код: <код> import tkinter as tk import urllib.request import base...

1  Создание метода класса Python с использованием закрытия  ( Creating a python class method using a closure ) 
Я использую модуль unittest unittest module (как я довольно новый python), и я оказываюсь, что вы выполняете те же утверждения испытаний снова и снова. Я х...

Связанный проблема

0  Как написать Pivot_Table в TXT файл Python 
0  Как умножить диагональные элементы друг другом, используя numpy? 
0  Использование Pybind11 на MacBook Pro 
0  Почему мой скрипт Cron работает только один раз? 
25  Найти сломанные симличины с Python 
1  dataframe или sqlctx (sqlcontext) сгенерировали "попытка вызвать пакет" ошибка 
2  Spotipy Authentication не возвращает токен? 
2  Heroku Установить Letsencrypt - SU: ДОЛЖЕН БУДЬТ 
12  Редактировать с помощью контекстного меню IDLE (Python GUI) в Windows & NBSP; 7 
0  Python получает глобальные модули вместо местных внутри виртуальны 
1  Используйте файл в качестве аргумента для функции, которая подсчитывает, создает счет для каждой буквы в текстовом файле 
1  Cprofile принимает много памяти 
3  Compile United с кодом ошибки 1 в / tmp / pip_build_root / uwsgi 
1  Python: Tkinter не отображает мой образ или интерфейс 
1  Создание метода класса Python с использованием закрытия