[Python]ファイルセパレータでつまづいた話

以前の記事でPythonのツールを作ったのだが、もともとローカルPC(Windows10)で動かす予定だったが、CIツール上で動かすことになった

CIツールには複数のエージェントマシンが存在しOSがWindowsだったりUbuntuだったりするのだが、とりあえずWindowsマシンで動作させるように設定
ただ、エージェントマシンにインストールされているPythonの外部パッケージやネットワークの問題からどうしても解決できない問題があり泣く泣くUbuntuのエージェントでも動かすことに・・・
※管理者に頼み込んで外部パッケージ入れてもらうこともできるのだが・・・

ただツールがレポートファイルを出力するのでファイルのパスを変数で持たせており、特に意識せずに”\\”をファイルセパレータとして書いてた

path f".\\output\\report.txt"

ubuntuだとこれでは動きません
その為、ファイルセパレータの部分を修正する
ただ、Windows上でも実行するためどちらの環境下でも動作するようにしたい

軽くggったところos.sepでファイルセパレータを返してくれるので以下のように記載した

import os
 
path = f".{os.sep}output{os.sep}report.txt"

ただ、Ubuntu環境のPythonが3.5なのでf-stringが使えないため以下のように書き換え

import os
 
path = ".{sep}output{sep}report.txt".format(sep=os.sep)

とりあえずこれでOSに依存せず実行できるようになった。
が、見栄えがいまいちだ…

帰宅後さらにggったところ良い例が見つかったのでご紹介

import os
 
path = "./output/report.txt".replace('/', os.sep)

これが一番読みやすい気がする
また、Windows環境であってもファイルセパレータに”/”が使用できるため実は意識しなくてもよかったりする
ただ実行時にエラーが出た気がするんだよな…

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA