wer kann mir erklären wie "sys.argv" und os.path.isfile(fileName) funktioniert?

Du hast eine Idee für ein Projekt?
Antworten
lola80
User
Beiträge: 2
Registriert: Dienstag 15. November 2016, 14:16

Hallo zusammen, :)

ich bin ein absoluter Python Neuling, ich habe versucht mit Google und Co. zu verstehen aber vergeblich.
ok ich möchte eigentlich in Debug Modus arbeiten.
dafür starte ich dieses Skript.

Code: Alles auswählen

def main():  
    try:
        opts, args = getopt.getopt(sys.argv[1:], "h", ["help"])
		
		
    except getopt.GetoptError:
        sys.exit(2)
    if len(sys.argv) < 8:
        print "Error: 8 arguments are needed"
    else:
        generate_qac(args)      


if __name__ == "__main__":
    #file_name=input("file_name")
    #print(file_name)
    print __name__

    main()
wenn ich es ausführe bekomme ich immer den Fehler, "Error: 8 arguments are needed"
was mache ich falsch und wie kann ich Parameter an main() oder generate_qac(args) übergeben?

Code: Alles auswählen

def generate_qac(args):
          
    if os.path.isfile("prj_template.txt"):
        # read prj template file
        qac_prj_template = read_text_file("prj_template.txt", False)
aber mein os.path.isfile("prj_template.txt"): finde nie dieses Skript was mache ich falsch kann mir irgendwer bitte sagen?
:-((((

P.S. die Skripte sind nicht von mir ich benutze es aber für weitere Arbeit
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@lola80: getopt sollte man nicht verwenden, sondern ArgumentParser (so steht es auch in der Dokumentation). Dieser ganze getopt-Aufruf macht sowieso keinen Sinn. Welche Argumente hast Du denn beim Aufruf des Skriptes angegeben? Wenn es weniger als 7 sind, dann kommt halt die Fehlermeldung dass mindestens 8 gebraucht werden.

Wie liegt denn die Datei prj_template.txt und von welchem Verzeichnis aus rufst Du das Skript auf?
BlackJack

@lola80: Kommandozeilenargumente gibt man bei Aufruf eines Programms auf der Kommandozeile an. Wie startest Du das Programm denn?

'prj_template.txt' ist eine relative Pfadangabe. Da es nur ein Dateiname ist, wird diese Datei im aktuellen Arbeitsverzeichnis des Prozesses gesucht. Also üblicherweise das aktuelle Verzeichnis in der Shell bevor man das Programm gestartet hat.
lola80
User
Beiträge: 2
Registriert: Dienstag 15. November 2016, 14:16

Hallo,
erstmals vielen Dank für die Unterstützung, ich werde meine Code mit ArgumentParser anpassen. Alle Skripte liegen im selben Verzeichnis. Ich kann und rufe die Skripte aus einem cmd file aus. Ich habe zusätzlich JetBrains pycharm installiert und wollte damit meine python script mit dem debuggen, aber ich weiss nicht wie ich die werte für args in debug Modus eingeben kann.
kann mir jemand da bitte helfen?
danke
SeBu
User
Beiträge: 16
Registriert: Samstag 4. Januar 2014, 11:36

Bei PyCharm findest du unter "Run > Edit Configurations" den Punkt "Script parameters".
Alles, was du dort einträgst, wird dann beim Debuggen an das ausgewählte Skript übergeben.
Antworten