Pythonを使ったコーディングの学習は、ソフトウェア開発の世界に迅速かつ効果的に参入したい初心者にとって理想的なステップです。理論的なレッスンに頼るのではなく、シンプルで実践的なスクリプトを作成することが、言語の基礎を理解し、概念を直接適用するための最良の方法です。この記事では、文字列、計算、ファイル、基本的なデータ構造などの重要な側面を網羅した、自信を持ってPythonを使い始めるのに役立つ基本的なPythonスクリプトセットを学びます。
Pythonは、オブジェクト指向のアプローチとシンプルな構文のおかげで、最も簡単に習得できるプログラミング言語の一つです。標準ライブラリには、大小を問わずあらゆる種類のプログラムの作成に使用できる便利なモジュールが多数含まれています。
ここに挙げたスクリプトはすべてサイズが小さく、特定のタスクに特化しています。日常的な作業だけでなく、スクリプトをベースに拡張して機能を追加することも可能です。
1. バッチファイルの名前を変更する
複数のファイルの名前を変更するのは難しい作業です。シェル言語の構文を覚えていれば、その場でコマンドを入力することも、renameのような外部プログラムを使うこともできます。
このシンプルなPythonプログラムは、現在のフォルダ内にある特定のテキストを含むすべてのファイルの名前を、そのテキストを特定のパターンに置き換えて変更します。例えば、複数の拡張子を「.htm」から「.html」に変更したい場合などに使用できます。
import os, sys
if len(sys.argv) < 3:
sys.exit("usage: " + sys.argv[0] + " search replace")
for filename in os.listdir("."):
new_filename = filename.replace(sys.argv[1], sys.argv[2])
if new_filename != filename:
os.rename(
os.path.join(".", filename),
os.path.join(".", new_filename),
)
このスクリプトは、osとsysという2つの便利な低レベルモジュールをインポートします。sysは引数の数(sys.argv)をチェックするためにすぐに使用され、引数の数が少なすぎる場合は終了します。
メインの for ループは、現在のディレクトリ (.) 内のすべてのファイル名を反復処理します。String クラスの replace 関数は、最初の引数を 2 番目の引数に置き換えようとします。
ファイル名が変更されたかどうかを最終的に確認した後、 os.rename() 関数を呼び出して、必要に応じてファイルを更新します。
警告
このスクリプトには包括的なエラー処理機能がないため、単純なテキスト文字列の検索と置換にのみ使用することをお勧めします。複数のファイルに影響を与える可能性のあるバッチ操作を使用する場合は、常に注意してください。
2. サムネイルジェネレーター
以下の4行のスクリプトは、シンプルなライブラリ(この場合はPillow)の威力を示しています。Python Imaging Libraryのこのブランチには、シンプルなスクリプトから本格的なグラフィックエディタまで、あらゆる画像処理関数が含まれています。
助言
このスクリプトを実行する前に、Pillowライブラリをインストールする必要があります。macOSではbrew install pillowコマンドでうまくいきましたが、インストールページで推奨されているpipを試すこともできます。
このスクリプトは、Image モジュールの 3 つのメソッドを使用してファイルを開き、サムネイルを作成し、それを 2 番目のファイルに保存します。
from PIL import Image
image = Image.open("image.jpg")
image.thumbnail((500, 500))
image.save("image_thumb.jpg")
サムネイル関数がグループという単一のパラメータを受け取る点に注目してください。この関数は、元の画像と同じ比率で、指定したサイズに応じて最大幅と高さを持つ画像を作成します。
この関数自体は、ファイル名とサイズが事前にプログラムされているため、用途が限られています。これらの値をコマンドラインパラメータとして渡すことで、スクリプトの2番目の、それほど大きくないバージョンを使用して機能を拡張できます。
from PIL import Image
import sys
if len(sys.argv) < 4:
sys.exit("usage: " + sys.argv[0] + " image width height")
image = Image.open(sys.argv[1])
image.thumbnail((int(sys.argv[2]), int(sys.argv[3])))
image.save("thumb.jpg")
最終的なサムネイルファイル名は事前にプログラムされていることに注意してください。追加のボーナスとして、元の名前に基づいてファイル名を生成したり、4番目のコマンドラインパラメータを指定したりすることもできます。
3. シンプルなウェブサーバー
シンプルなウェブサーバーは非常に便利です。ローカルマシン上のファイルを素早く閲覧したりアクセスしたりするために使っています。また、ウェブ開発にも便利なツールです。
これほどシンプルな Web サーバーはほとんどありません。
import http.server, socketserver
port = 8001
with socketserver.TCPServer(
("", port), http.server.SimpleHTTPRequestHandler
) as httpd:
print(f"Serving at port {port}")
httpd.serve_forever()
ここでの作業の大部分は、http.server モジュールと socketserver モジュールが行います。ポート番号と SimpleHTTPRequestHandler は汎用 TCPServer インスタンスに渡され、このインスタンスは現在のディレクトリにあるファイルを HTTP 経由でサーバーに提供します。Serve_forever 関数(socketserver.BaseServer クラスから継承)は、shutdown() 関数が呼び出されるまでリクエストを処理します。
警告
Python のドキュメントで警告されているように、http.server モジュールには適切なセキュリティが欠けており、本番環境での使用には適していません。
デモサーバーではありますが、個人使用に最適で、そのシンプルさは他に類を見ません。
4. ランダムパスワードジェネレーター
新規ユーザーアカウント、Webフォーム、あるいは独自の開発作業など、ランダムなパスワードが必要になることはよくあります。パスワードマネージャーの使用をお勧めしますが、必ずしも便利とは限りません。独自のスクリプトを使えば、細かい設定を細かく制御し、ニーズに合わせて微調整することができます。
import string, random
def main(length: int) -> str:
characters = string.ascii_letters + string.digits + string.punctuation
return "".join(random.choice(characters) for i in range(length))
print(main(32))
このスクリプトは、文字列モジュールとランダムモジュールを使用して、わずか5行でランダムパスワードを生成します。文字列モジュールには、数字や文字などの個々の文字の組み合わせを表す便利な定数が含まれています。これらの定数を組み合わせ、ランダムな数値を選択することで、スクリプトは一連の文字列を組み立て、最終的なパスワードを生成します。
5. 暗号通貨価格チェッカー
このスクリプトはシンプルでクリーンなAPIの威力を示しています。このスクリプトで使用されているAPIは、 コインゲッコ – HTTP 経由なので持ち運びやサポートが簡単です。
このスクリプトを実行する前に、使用するエンドポイントからのAPIレスポンスを確認してください。 /シンプル/価格。 ids パラメータで渡された通貨エントリを含む JSON 形式でデータが返されることがわかります。
import urllib.request, json
def get_crypto_prices():
url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,litecoin&vs_currencies=usd"
ufile = urllib.request.urlopen(url)
text = ufile.read()
return json.loads(text)
crypto_prices = get_crypto_prices()
for coin, value in crypto_prices.items():
print(f"{coin.capitalize()}: ${value['usd']}")
urllib.request モジュールには、URL のコンテンツを取得して HTTPResponse オブジェクトを返す urlopen() 関数が含まれています。このテキストを読み取って json.loads() 関数に渡すと、同等の辞書オブジェクトが作成されます。
JSON は構文的に読みやすく、解析やテストも簡単なため、Web API で非常に人気のある形式です。
6. ASCIIテーブルジェネレータ
ASCII文字セットは、様々なコンピューティングコンテキストで使用される128個の一般的な英語文字で構成されています。ほとんどのプログラミング言語は、ASCII文字を個別の文字に変換したり、その逆を行ったりする機能をサポートしていますが、すべてのASCII文字を一度に表示することが便利な場合もあります。
for i in range(32, 128):
print("{:03d}".format(i) + " " + chr(i), end=" ")
if (i - 1) % 10 == 0:
print()
print()
このスクリプトは、32 から 127 までのすべての ASCII 文字とそのコード ポイントが含まれたテーブルを出力します。
まず注目すべきは、Pythonの組み込み関数 range() が引数をどのように処理するかです。最初の引数を反復処理しますが、2番目の引数に到達する前に停止します。JavaScriptのような言語では、同等の for ループは次のようになります。
の (i = 0; 私 128; i++) { … }
残りの作業の大部分はprint()行にあり、各コードポイントを3ビットの固定幅にフォーマットします。chr()関数は、ASCIIコードに基づいて文字を返します。
助言
この表に示されている ASCII の便利な特性の 32 つは、小文字 (az) が大文字の XNUMX 倍の大きさであることです。
残りの方法は、適切な位置に改行文字を出力し、結果が行ごとにきちんと分割されるようにすることです。この演算子は、範囲インデックスを10で割ったときに%を使用して余りをチェックし、各行にXNUMX文字が含まれるようにします。
今回レビューしたスクリプトを試してみて、小規模プロジェクトに合わせて調整すれば、Pythonプログラミングの基礎を素早く習得できます。他にも初心者に役立つスクリプトがあれば、コメント欄で共有してください。皆さんが活用し、スキルを共に磨くことができるようになります。