2013-07-11 10 views
6

miałem mały skrypt Pythona, która pobiera dane wejściowe z argumentów wiersza poleceń i zrobić kilka operacji za pomocą wejść podjęte i wyświetlić wynikjak zrobić Uruchom plik python bez rozszerzenia py

Poniżej znajduje się praca przykład kodu

some_file.py

import sys 

arguments = sys.argv 
first_name = sys.argv[1] 
second_name = sys.argv[2] 

print "Hello {0} {1} !!!!".format(first_name,second_name) 

teraz jestem wykonywania tego jako

python some_file.py Steve jobs 

Wynik:

Hello Steve Jobs !!!! 

Teraz wszystko co chcę to, nie chcę użyć polecenia python przed nazwą pliku i rozszerzenie nazwy pliku python, to chcę, aby uruchomić plik jako narzędzie polecenia poniżej:

some_file Steve Jobs 

co zrobić, aby uruchomić plik Pythona jak wyżej?

Odpowiedz

3

Uniksopodobny rozwiązanie OS: pierwsza linia pliku powinna być #!/usr/bin/python (lub gdziekolwiek interpreter Pythona) i chmod u+x skrypt. Uruchom go pod numerem ./some_file parameters.

Jeśli chcesz uruchomić go za pomocą some_file parameters, wystarczy utworzyć łącze do skryptu w katalogu, który jest już uwzględniony w zmiennej PATH: sudo ln -s some_file /usr/bin.

Więc tutaj jest pełna procedura:

[email protected]:~$ cat > hw 
#!/usr/bin/python 

print "Hello World!" 

[email protected]:~$ chmod u+x hw 
[email protected]:~$ sudo ln -s hw /usr/bin 
[email protected]:~$ hw 
Hello World! 
[email protected]:~$ 
+0

Dokładnie dodałem ścieżkę na początku skryptu i wykonałem ją przy pomocy polecenia chmod u + x. a po tym, jak uruchomię LIKKĘ powyżej, wyświetli się "" bash: ./some_file: Brak takiego pliku lub katalogu "" –

+1

Linia półokręgu musi zawierać pełną ścieżkę do interpretera Pythona lub program znanej ścieżki, która go znajdzie, takie jak '#!/usr/bin/env python'. Ponadto rozwiązania oparte na shebang będą działały tylko w systemach uniksowych, a nie w systemie Windows. – user4815162342

+0

Również nie chcę używać nawet "./" przed plikiem some_file, chcę użyć go jako narzędzia, na przykład jeśli typ top w linuxie pokaże trochę szczegółów, mam na myśli, że –

3

zrobić dowiązanie

ln -s some_file.py some_file 

teraz można wpisać cmd tak:

some_file Steve Jobs 
+0

Zrobione to działa :) –

+0

, ale myślę, że jest to rozwiązanie tymczasowe, ponieważ jeśli skopiujemy plik w innej lokalizacji, to mam nadzieję, że musimy uruchomić powyższe polecenie, aby uruchomić plik bez odpowiedniego rozszerzenia? szukam i mówię o tym, że nie ma tam, gdzie plik py istnieje, ale gdy uruchamiamy plik jak plik_dzienny (bez rozszerzenia), powinien on działać –

+0

, więc jeśli umieścimy plik na stałe w ścieżce Pythona, czy będziemy mogli uzyskać dostęp do plik w powyższy sposób? –

0

można uruchomić sam program w powłoce Pythona za pomocą execfile('path').