業務で使えるPythonスクリプト
業務で使えるかも?なPythonスクリプトの例をいくつか挙げています。
カスタマイズして使ってみてください。
1. ファイル整理
このスクリプトは、指定されたディレクトリ内のファイルを拡張子に基づいて整理します。例えば、.txt ファイルを Text フォルダに、.png ファイルを Images フォルダに移動します。
import os
from collections import defaultdict
def organize_files(directory):
# 拡張子とフォルダ名のマッピング
extension_folder_map = {
'txt': 'Text',
'png': 'Images',
'jpg': 'Images',
'pdf': 'Documents',
'csv': 'Spreadsheets',
}
# ディレクトリに移動
os.chdir(directory)
# ディレクトリ内のファイルとフォルダのリストを取得
files = os.listdir()
folder_files_map = defaultdict(list)
# ファイルを対応するフォルダに整理
for file in files:
if os.path.isfile(file): # ファイルのみ対象
ext = file.split('.')[-1] # 拡張子を取得
folder = extension_folder_map.get(ext, 'Others') # 対応するフォルダを取得、対応するものがなければ 'Others'
folder_files_map[folder].append(file) # ファイルを対応するフォルダのリストに追加
# フォルダを作成し、ファイルを移動
for folder, files in folder_files_map.items():
if not os.path.exists(folder): # フォルダが存在しなければ作成
os.makedirs(folder)
for file in files:
os.rename(file, os.path.join(folder, file)) # ファイルを新しいフォルダに移動
directory = "." # ディレクトリのパスを指定
organize_files(directory)
2. ウェブスクレイピング
このスクリプトは、指定されたウェブページから情報を抽出するために使用できます。以下の例は、BeautifulSoupを使用してウェブページからテキスト情報を抽出します。
import requests
from bs4 import BeautifulSoup
def scrape_website(url):
# ウェブページを取得
response = requests.get(url)
if response.status_code == 200: # ステータスコードが200の場合、正常にページを取得
soup = BeautifulSoup(response.text, 'html.parser') # HTMLを解析
text = soup.get_text(strip=True) # テキスト情報を抽出
return text
else:
return f"Failed to retrieve the webpage. Status code: {response.status_code}"
url = "http://example.com" # スクレイピングするウェブページのURLを指定
print(scrape_website(url))
上記だとそのページ全てを抽出してしまうので、例えばアクセスしたページの特定のliタグの文字列を抽出したい場合
import requests
from bs4 import BeautifulSoup
def scrape_ul_li_text(url, ul_selector):
# 指定したURLからウェブページを取得
response = requests.get(url)
if response.status_code == 200: # ステータスコードが200の場合、ページ取得成功
soup = BeautifulSoup(response.text, 'html.parser')
# 指定したセレクタにマッチするulタグを探す
ul_tag = soup.select_one(ul_selector)
if ul_tag:
# ulタグ内のすべてのliタグのテキストを抽出
li_texts = [li.get_text(strip=True) for li in ul_tag.find_all('li')]
return li_texts
else:
return f"No ul tag found with selector: {ul_selector}"
else:
return f"Failed to retrieve the webpage. Status code: {response.status_code}"
url = "http://example.com" # スクレイピングするウェブページのURLを指定
ul_selector = "" # ulタグを特定するためのCSSセレクタを指定
print(scrape_ul_li_text(url, ul_selector))
3. ログ解析
ログファイルから特定の情報を抽出するためのスクリプトです。以下の例は、エラーメッセージを含む行を抽出します。
def analyze_log(file_path):
with open(file_path, 'r') as file: # ログファイルを読み込みモードで開く
# 'ERROR' を含む行だけをリストに追加
error_lines = [line for line in file if 'ERROR' in line]
return error_lines
file_path = "./log.txt" # ログファイルのパスを指定
for line in analyze_log(file_path): # エラーログを一行ずつ出力
print(line)