2017-04-20 11 views
0

私はWindows(ローカルテストと開発)とLinux(CI CD)で動作する自分のコードを経由してファイルをロードする際に問題があります。クロスプラットフォーム絶対相対ファイルパスを取得するにはどうすればいいですか?

私のコードは、Linux上で実行されている場合、相対的な作品は罰金、Windowsでローカルにファイルパスを私のコードを実行しているものの、それは混乱になり、エラーを返します:No such file or directory

があるPythonで、このようなコードがありますクロスプラットフォームはそれを解決するには?

私のコードは次のようである:フォルダのクラスパスを取得するためのコードが

def get_event_json_file_path(fileName): 
    file_dir = os.path.dirname(os.path.realpath('__file__')) 
    file_path = os.path.join(file_dir, "events/" + fileName) 
    return file_path 

ありますか?

+0

は私達にあなたのコードを表示します! – Alfe

+0

もちろん、 'os.path'以下の関数を使って、プラットフォーム独自にパスを扱い、絶対パスを相対パスで作ることができます。 – Alfe

+0

セパレータとして相対パスとスラッシュ(バックスラッシュではない)を使用すると、すべてのオペレーティングシステムで使用できます。 –

答えて

2

私はこの機能をコーディングするために管理:

def get_relative_file_path(file_dir_path, fileName): 
    dir = os.path.dirname(__file__) 
    file_path = os.path.join(dir, file_dir_path,fileName) 
    return file_path 

使用法:

get_relative_file_path('../resources/', "restCallBodySchema.json") 
関連する問題