2015-01-07 15 views
5

Parametr data_files dla instalacji trwa wejście w następującym formacie:Dołącz całego katalogu w Pythonie data_files setup.py

setup(... 
    data_files = [(target_directory, [list of files to be put there])] 
    ....) 

Czy istnieje sposób dla mnie, aby określić cały katalog danych, zamiast, więc don” • musicie nadać nazwę każdemu plikowi indywidualnie i aktualizować go, gdy zmieniam implementację w moim projekcie?

I próbował użyć os.listdir(), ale nie wiem jak to zrobić ze ścieżki względne, nie mogłem używać os.getcwd() lub os.realpath(__file__) ponieważ te nie wskazują na moim repozytorium korzenia poprawnie.

Odpowiedz

1

nie wiem jak to zrobić ze ścieżek względnych

trzeba uzyskać ścieżkę pierwszego katalogu, więc ...

Powiedzmy, że masz taką strukturę katalogów:

cur_directory 
|- setup.py 
|- inner_dir 
    |- file2.py 

Aby uzyskać katalogu bieżącego pliku (w tym przypadku setup.py), użyj tego:

cur_directory_path = os.path.abspath(os.path.dirname(__file__)) 

Następnie, aby uzyskać ścieżkę katalogu względem current_directory, po prostu dołączyć kilka innych katalogów, np:

inner_dir_path = os.path.join(cur_directory_path, 'inner_dir') 

Jeśli chcesz przenieść się do katalogu, wystarczy użyć „..”, na przykład:

parent_dir_path = os.path.join(current_directory, '..') 

Gdy masz tą ścieżką, można zrobić os.listdir

Dla kompletności:

Jeśli chcesz ścieżkę do pliku, w tym przypadku „file2.py” w stosunku do setup.py, można zrobić:

file2_path = os.path.join(cur_directory_path, 'inner_dir', 'file2.py') 
1
import glob 

for filename in glob.iglob('inner_dir/**/*', recursive=True): 
    print (filename) 

ten sposób można dostać się bezpośrednio listę plików w stosunku do obecnych informator.

Powiązane problemy