ホームページ >バックエンド開発 >Python チュートリアル >Pythonシェルスクリプトの使い方

Pythonシェルスクリプトの使い方

王林
王林転載
2023-05-11 10:25:052457ブラウズ

1. sh とは

#SH は、システム プログラムを Python 関数に動的にマッピングできる独自のサブプロセス ラッパーです。 SH は、Python でシェル スクリプトを作成するのに役立ちます。これは、Bash のすべての機能 (単純なコマンド呼び出し、単純なパイプ送信) をサポートするだけでなく、Python の柔軟性も考慮しています。

SH は、関数であるかのように任意のシステム プログラムを呼び出すことができる Python の成熟したサブプロセス インターフェイスです。つまり、SH を使用すると、ログイン シェルから実行できるほぼすべてのコマンドを呼び出すことができます。

さらに重要なのは、コマンドの出力をより簡単にキャプチャして解析できることです。

2. 使用手順

1. インストール

pip コマンドを使用して sh

pip install sh

をインストールします

#2. 例を使用します

起動して実行する最も簡単な方法は、sh を直接インポートするか、必要なコマンドを sh からインポートすることです。このコマンドは Python 関数のように使用できます。

たとえば、パラメーターを渡し、出力をキャプチャし、その出力を Python で使用します。詳細については、以下のコード例を参照してください

# get interface information
import sh
print sh.ifconfig("eth0")

from sh import ifconfig
print ifconfig("eth0")

# print the contents of this directory
print ls("-l")

# substitute the dash for an underscore for commands that have dashes in their names
sh.google_chrome("http://google.com")

サブコマンドを記述する 2 つの方法

# 子命令
>>> from sh import git, sudo
>>> print(git.branch("-v"))
>>> print(git("branch", "-v"))
>>> print(sudo.ls("/root"))
>>> print(sudo("/bin/ls", "/root"))

# with 环境
>>> with sh.contrib.sudo(_with=True):
        print(ls("/root"))
# _with=True 关键字告诉命令它正处于 with 环境中, 以便可以正确地运行.

#将多个参数传递给命令时,每个参数必须是一个单独的字符串:

from sh import tar
tar("cvf", "/tmp/test.tar", "/my/home/directory/")
# 这将不起作用:

from sh import tar
tar("cvf /tmp/test.tar /my/home/directory")

3. sh を使用してコマンドを実行します

コマンドは関数と同じように呼び出されます。

ただし、「これらは実際の Python 関数ではないことに注意してください。実際に実行されるのは、システム内の対応するバイナリ コマンドです。Bash と同様に、PATH を解析することによってシステム上で動的に実行されます。

このため、Python はシェル コマンドを非常に適切にサポートしており、システム上のすべてのコマンドは Python を通じて簡単に実行できます。」

多くのプログラムには、git (ブランチ) などの独自のコマンドのサブセットがあります。 、 サインアウト)。

sh は属性アクセスを通じてサブコマンドを処理します。

from sh import git

# resolves to "git branch -v"
print(git.branch("-v"))

print(git("branch", "-v")) # the same command

4. キーワード引数

キーワード引数も期待どおりに機能し、コマンド ライン引数オプションに置き換えられます。

# Resolves to "curl http://duckduckgo.com/ -o page.html --silent"
sh.curl("http://duckduckgo.com/", o="page.html", silent=True)

# If you prefer not to use keyword arguments, this does the same thing
sh.curl("http://duckduckgo.com/", "-o", "page.html", "--silent")

# Resolves to "adduser amoffat --system --shell=/bin/bash --no-create-home"
sh.adduser("amoffat", system=True, shell="/bin/bash", no_create_home=True)

# or
sh.adduser("amoffat", "--system", "--shell", "/bin/bash", "--no-create-home")

5. Find コマンド

「Which」はプログラムのフルパスを検索し、存在しない場合は None を返します。このコマンドは、実際に Python 関数として実装されている数少ないコマンドの 1 つであるため、実際の「どの」バイナリに依存しません。

print sh.which("python")     # "/usr/bin/python"
print sh.which("ls")         # "/bin/ls"

if not sh.which("supervisorctl"): sh.apt_get("install", "supervisor", "-y")

sh で利用できる機能は他にもたくさんあり、それらはすべて見つかります。公式ドキュメントに記載されています。

6.Baking パラメータ

sh は、「baking」パラメータをコマンドとして使用できます。これにより、次のコードに示すように、対応する完全なコマンド ライン文字列が出力されます。

ssh ベイク コマンド

コマンドで「bake」を呼び出すと、「bake」に渡されるすべての引数を自動的に渡す呼び出し可能オブジェクトが作成されます。

# The idea here is that now every call to ls will have the “-la” arguments already specified.
from sh import ls

ls = ls.bake("-la")
print(ls) # "/usr/bin/ls -la"

# resolves to "ls -la /"
print(ls("/"))

これで、ベイク SSH コマンドを表すために「myserver」を呼び出すことができます:

# Without baking, calling uptime on a server would be a lot to type out:
serverX = ssh("myserver.com", "-p 1393", "whoami")

# To bake the common parameters into the ssh command
myserver = sh.ssh.bake("myserver.com", p=1393)

print(myserver) # "/usr/bin/ssh myserver.com -p 1393"

以上がPythonシェルスクリプトの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。