2016-06-16 12 views
1

ファイルへのパスを印刷しようとしています。現在の作業ディレクトリからファイルへのフルパスが必要です。クラスのファイルパスを現在の作業ディレクトリから取得する

inspectモジュールを使用して、ファイルへのパスを探しています。しかし、これは私が探しているものではない完全なパスを与えるでしょう。

import inspect 

class Foo: 
    def __init__(self): 
     print(inspect.getfile(self.__class__)) 

ここでファイル名自体はos.path.basenameです。しかし、これは私だけが私が望むものではないファイル名を与えるでしょう。

import inspect 
import os 

class Foo: 
    def __init__(self): 
     path = inspect.getfile(self.__class__) 
     filename = os.path.basename(path) 
     print(path) 
     print(filename) 

私が探していますパスを取得するためにos.getcwd()と組み合わせてpathを使用することは比較的容易だろう。これは、私が探している結果を私に与えるでしょう。

import inspect 
import os 


class Foo: 
    def __init__(self): 
     path = inspect.getfile(self.__class__) 
     cwd = os.getcwd() 
     print(path[len(cwd):]) 

これを行うより簡単な方法があるのでしょうか?

+2

はあなたが考えがあります[ 'os.path.relpath'](https://docs.python.org/3/library/os.path.html#os.path.relpath )? – jonrsharpe

+0

@jonrsharpeいいえ、私はしませんでした。これは本当によかったです。ありがとうございました。 – RemcoW

答えて

2

私はos.path.relpath()と思っています。

例:

import os, inspect 

class Foo(): 
    def __init__(self): 
     self.path = os.path.relpath(inspect.getfile(self.__class__)) 


foo = Foo() 
print(foo.path) 
関連する問題