Change directory in Click CLI

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Moin,

ich baue gerade ein CLI mit Click auf. Mit einer Funktion will ich zu schnell zu verschiedenen Verzeichnissen springen. Mein erster Versuch war mit os.chdir() das Verzeichnis zu wechseln, das hat allerdings keine Auswirkungen auf das CMD.

Hier der Ausschnitt der Befehl in Click.

Code: Alles auswählen

@click.command(help='Jumps to certain directory.')
@click.option('--to', help='Adrees to jump to.\nPotential values: "projects", "pictures", "2022" (or other years, if exists),...')
def jmp(to):
    from jump import jump
    jump(to)
Zum Wechseln des Verzeichnisses. Dateiname = jump.py

Code: Alles auswählen

import os
import settings
import pathlib

def jump(to):
    '''Springt zu einem gewählten Verzeichnis.'''
    
    
    s=settings.settings()
    
    
    if to=='projects':
        #Projektpfad
        path=s.return_setting('Project_Directory')
        path=pathlib.Path(path)
        
    elif to=='pictures':
        #Pfad zu Bilderablageverzeichnis
        path=s.return_setting('Picture_Directory')
        path=pathlib.Path(path)
        
    elif to.isnumeric():
        path=s.return_setting('Project_Directory')
        path=pathlib.Path(path)
        path=path.joinpath(to)
        
    #Üerprüfen, ob Pfad existiert
    if not path.exists():
        raise
    
    #Pfad wechseln
    os.chdir(path)
Am Ende bleibt das CMD leider im gleichen Verzeichnis. :(
Vom Google weiß ich nur dass auch supprocess ebenfalls nicht weiterhilft. Aber eine richtige Lösung für Windows habe ich nicht gefunden.

Weiß jemand Rat?

Gruß Sascha
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich weiss nur, dass es unter Unix genausowenig geht. Autojump oder FASD muessen dort mittels Shell-Funktionen die Shell beeinflussen, weil ein Unterprozess (aus guten Gruenden!) sowas nicht darf. Wenn Windows da nicht total bescheuert drauf ist (ok, kommt vor...), dann ist das da ebenso. Wie man nun eine solche Funktion schreibt (oder ob es ueberhaupt geht), steht auf einem anderen Blatt. Aber speaking of autojump: https://github.com/wting/autojump - benutz das doch einfach. Oder schau halt nach, wie es das macht.
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Danke für deine Antweort __deets__
Wenn ich keine LÖsung mit Python finde, versuche ich es mal mit Autojump.

Zur erhofften Pythonlösung:
Vieleicht gibt es ja eine Möglichkeit mit einer Click Funktion? Weiß da jemand was?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na schau dir doch an, wie Autojumo das macht. Das ist doch alles Quell offen.
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Achso meinst du das. Ich hoffe meine Python Kenntnisse reichen dafür aus. Ich werde es mal versuchen.
Antworten