データ解析プログラミング備忘録

ニッチな備忘録。自分用ですが、誰かの役に立てば幸い。

PythonのglobでMacのemlxファイル検索しようとしたらハマった

タイトル通り。

 

背景

MacのMail情報をPythonで処理するため、以下ポストを参照にemlxパッケージをインストール。

ポストされているコードを走らせるもglobの段階で全くemlxファイルが引っかからない。

macos - API for programmatically accessing mail in Python on mac os X - Stack Overflow

 

これではemlxを勉強する以前の問題。

ごちゃごちゃ試しているうちに直ったので不要な手順があるかもしれないが、以下で解決。

セキュリティに関しては門外漢なので、権限変更等は自己責任で。

 

1) Terminal, spyderに Full Disk Accessを付与

System settings -> Privacy & Security -> Full Disk Accessからこの二つをオン。

Terminalは2)でファイル権限を変えた後は恐らく戻してもOK。

Spyderを使ってなければ当然そちらは不要

 

2) Mailのファイル権限を変更

chmod 775 /Users/<username>/Library/Mail 

注1: <username>は自分のものに変更。

注2: まず無いと思うが、Mailで違うディレクトリを使用している場合は適宜変更

注3: permission deniedが出たら sudo chmod 775 /Users/<username>/Library/Mail で。

 

3) Spyderをリスタート

PCリスタートの方が無難かも

 

確認

以上を済ませたら以下のテストコードで確認。

注1: <username>は自分のものに変更。

 

import glob
i = 0

for name in glob.iglob('/Users/<username>/Library/Mail/**/*.emlx', recursive = True) :
    print(name)
    i += 1
    if i > 10 :
        break

 

ファイルパスがプリントされればOK。

 

検索しても全く解決方法が出てこなかったので、おそらくSonomaのfull disk access関連の変更に起因した問題だと推察。

 

 

使用環境

Mac OS X (Sonoma 14.2.1)

Spyder (Python 3.8)

 

 

 

 

Â