2016-06-16 3 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) 

Было бы относительно легко использовать path в сочетании с os.getcwd(), чтобы получить путь, который я ищу. Это даст мне результат, который я ищу.

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) 

 Смежные вопросы

  • Нет связанных вопросов^_^