Python、とても流行していますね!
弊サイトにもいろんなキーワードで来訪者があります。
書店に行くと機械学習関連のPython書籍が多く見られますが、ここではちょっとしたファイル操作に関するPythonスクリプトを掲載します。
中にはコマンドプロンプトで実行できるものもあるんだけど、ある種のCLIツールみたいに手元にスクリプトを置いておくと、後から簡単に実行できて便利だからね。
当Webサイト作成者は、例示を目的としてマークアップ及びプログラミング例を提供しており、明示または黙示にかかわらず、いかなる責任も負わないものとします。
このページは、説明されているマークアップ及びプログラミング言語、手順を作成およびデバッグするために使用される各種ツールに読者が精通していることを前提にしています。
このページは、特定の機能を説明するのに役立つ可能性がありますが、当Webサイト作成者がこれらの例を変更した上で、特定の要件を満たすために追加の機能を提供したり、システムを構築したりすることはできません。
加えて、この例の手順に従う場合は、読者の各種ファイルを事前にバックアップすることを推奨いたします。
Windowsでまとめてリネームすると、なぜかファイル名に半角スペースが挿入されるんですよね。
初めから意図して変更しても良いんだけど、自動的に数字を振ってくれるのは助かる。
そこで、GUIベースでファイルリネームしてから半角スペースをPythonで削除しちゃってます。
ファイルから半角スペースを削除するfile_space.py
import os
directory = r'C:\Users\アレコレ\Desktop\flower3'
for filename in os.listdir(directory):
old_filepath = os.path.join(directory, filename)
new_filename = filename.replace(' ', '') # 半角スペースを削除
new_filepath = os.path.join(directory, new_filename)
os.rename(old_filepath, new_filepath)
print("ファイル名のリネームが完了しました。")
まぁ、ちょっとした手元の小ネタですよ。
スクリプトの説明は次のとおり。
これは私の個人都合に限りなく近いですね。
CSSやJavaScriptはほとんど機会ないけど、htmlに関してはまとめて一括操作したいことがあるんです。
グローバルナビゲーションを変更したりとか。
そういう時にいちいち手作業でやってたら、日が暮れるどころか年越ししちゃいますよ。
現在自分のサイトにいくつのhtmlページがあるのか、正確な数を把握するのに使ってます。
HTML・CSS・JavaScriptのファイルを数えるfile_sum.py
import os
def count_files(directory, extension):
count = 0
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(extension):
count += 1
return count
# メインディレクトリを指定
main_directory = r'C:\Users\アレコレ\OneDrive\_fein\google cloud\fein-sites-dev1\www'
# 各ファイルタイプの総数を計算
total_html_files = count_files(main_directory, '.html')
total_css_files = count_files(main_directory, '.css')
total_js_files = count_files(main_directory, '.js')
# HTMLファイルは2を引く
html_result = total_html_files - 2
# 結果を表示
print(f"{html_result} の HTMLファイルがあります")
print(f"{total_css_files} の CSSファイルがあります")
print(f"{total_js_files} の JavaScriptファイルがあります")
htmlファイル数から2を引いているのは、私個人の環境によるものです。
このサイトには直接的にWebページとしては表示されないものの、htmlページの構成要素の一部として使われる commongdl.html と menu.html という2つのファイルが存在します。
この2つは例外として扱わないと、ファイル数を確認してからまとめてスクリプトを実行する時に支障が出る可能性があるんですよね。
他の様々なhtmlファイルは一貫して似たような構造を持たせているのです。
そうすることによって、柔軟な運用が効くようになる。
VS Codeやスクリプトを使ってhtmlファイルをミスなく一括操作しやすいってわけです。
では、スクリプトの説明に移りましょう。
Web制作あるあるだと思うのですが、後から多数のhtmlファイルに特定のコードを挿入したいことがあります。
そんなときにもPythonは便利に使えます。
VS Codeのデフォルト機能でやることもできるけど、ちょっとでも指定を間違えると大惨事になってしまったりする。
このPythonでやる方法もバックアップが必要であることは変わりませんが、狙ったポイントにコードを入れやすいと感じます。
多数のhtmlファイルにまとめてコードを挿入するpwa.py
import os
directory = 'C:/Users/ユーザー名/Desktop/pwahtml'
manifest_link = '<link rel="manifest" href="/manifest.json">\n'
service_worker_script = '''
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js')
.then(registration => {
console.log('ServiceWorker registration successful with scope: ', registration.scope);
})
.catch(error => {
console.log('ServiceWorker registration failed: ', error);
});
}
</script>
'''
for filename in os.listdir(directory):
if filename.endswith(".html"):
file_path = os.path.join(directory, filename)
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
if '<head>' in content:
new_content = content.replace('<head>', '<head>\n' + manifest_link + service_worker_script)
else:
continue
with open(file_path, 'w', encoding='utf-8') as file:
file.write(new_content)
print("すべてのHTMLファイルにPWAコードを挿入しました。")
このPythonコードは特定のフォルダ内にあるすべてのHTMLファイルに、Progressive Web App (PWA) 関連のコードを自動的に挿入するものです。
1. モジュールのインポート
import os
os モジュールはオペレーティングシステムとの対話を行うために使用されます。
このコードでは、ディレクトリの内容を一覧表示したり、ファイルパスを操作するために使用しています。
2. ディレクトリの設定
directory = 'C:/Users/ユーザー名/Desktop/pwahtml'
この変数には、操作対象となるHTMLファイルが保存されているディレクトリのパスを指定します。
3. 挿入するPWAコードの定義
manifest_link = '<link rel="manifest" href="/manifest.json">\n'
service_worker_script = '''
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js')
.then(registration => {
console.log('ServiceWorker registration successful with scope: ', registration.scope);
})
.catch(error => {
console.log('ServiceWorker registration failed: ', error);
});
}
</script>
'''
manifest_link
マニフェストファイルへのリンクが含まれています。
service_worker_script
サービスワーカーを登録するためのJavaScriptコードが含まれています。
4. ディレクトリ内のファイルのループ処理
for filename in os.listdir(directory):
os.listdir(directory)
指定したディレクトリ内のすべてのファイルとフォルダを一覧表示します。
for filename in os.listdir(directory):
ディレクトリ内の各ファイルに対してループを行います。
5. HTMLファイルの処理
if filename.endswith(".html"):
file_path = os.path.join(directory, filename)
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
if '<head>' in content:
new_content = content.replace('<head>', '<head>\n' + manifest_link + service_worker_script)
else:
continue
with open(file_path, 'w', encoding='utf-8') as file:
file.write(new_content)
if filename.endswith(".html"):
ファイルがHTMLファイルかどうかを確認します。
file_path = os.path.join(directory, filename)
ファイルのフルパスを取得します。
with open(file_path, 'r', encoding='utf-8') as file:
HTMLファイルを読み込むためにファイルを開きます。
content = file.read()
ファイルの内容を文字列として読み込みます。
if '<head>' in content:
ファイルに <head> タグが含まれているかを確認します。
new_content = content.replace('<head>', '<head>\n' + manifest_link +
service_worker_script)
<head> タグの直後にPWAコードを挿入します。
with open(file_path, 'w', encoding='utf-8') as file:
変更された内容をファイルに書き込むためにファイルを開きます。
file.write(new_content)
変更された内容を書き込みます。
6. 完了メッセージの表示
print("すべてのHTMLファイルにPWAコードを挿入しました。")
最後に、処理が完了したことを示すメッセージを表示します。
他にも狙った部分のコードをまとめて変更したりとか、いろいろできます。
後からまとめてデザイン部分を変更したくなるとか、よくあるからね。
そこらへんは追って書いていこうかと思います。
全ページをリスト化したサイトマップも用意していますが、けっこうなページ数があります。
下記の「カテゴリー分けサイトマップ」のほうが使いやすいでしょう。
アナザーエデンの強敵戦やストーリーコンテンツのリスト、お勧めバッジなどを掲載したコーナーです。
期間限定のない普通のRPGですので、初心者でも安心して続けていけるゲームとなっています。
もっとも重要なグラスタについては、場所別に網羅した表があります。
個人でウェブサイトを作るにはどうすればいいか。
HTML・CSS・JavaScriptの書き方はもちろん、無料かつ広告なしでホームページを作る方法を掲載したコーナーです。
Webデザインやレイアウトについても書いてあります。
ゲームとパソコンだけじゃなく、アウトドアも趣味なんです。
このコーナーでは魚釣りの記録とか、魚料理のレシピ、はたまたサイクリングなどなど。
アウトドアに関連するコンテンツが詰め込まれています。