質問: outlook.OpenSharedItem(r"args[1] + '/*.msg'") for file in glob(msg): with open(file, "r",encoding="utf-8") as f: for line in f: print(line): ``` pyファイル名は「file.py」です。 msgファイルはローカルディスクの中の「python」の中、 「test」という名前のフォルダの直下にあるので、 コマンドプロンプトでは ``` C:\python> file.py ./test ``` これで実行してみると、 「pywintypes.com_error: (-2147352567, '例外が発生しました。', (4096, 'Microsoft Outlook', 'パスまたは URL が無効です。」 と表示されます。 OpenSharedItemの中身が問題だとは思うのですがどう修正してよいやらいまいちわかりません。 お力添えいただければ幸いです ### 補足情報(FW/ツールのバージョンなど) python 3.6
回答: `r"args[1] + '/*.msg'"`という書き方が違っています。これだとargs[1]という文字列が渡ってしまい、変数が展開されません。 `r"{}/*.msg".format(args[1])`としてみてください。 また、正規表現では`*`は直前の文字の0回以上の繰り返しという意味なので、この書き方でマッチするファイルはほぼない気がします。(雑にやるなら`[0-9a-zA-Z]+`とすると、英数字のみの名前であればすべてマッチします) さらに、`.`は任意の1文字という意味なので、エスケープしない場合、ないとは思いますが`amsg`みたいな拡張子のファイルもマッチしてしまいます。 正規表現は想定外の文字列がマッチしないもほど良いものですので、ファイル名の形式に合わせて適切な指定をしてみてください。