Seite 1 von 2
Übergabe von Variablen
Verfasst: Donnerstag 2. Mai 2013, 18:58
von RSMVDL
Moin,
Ich würde gerne wissen wie ich z.B. Diesem (was durch php aufgerufen wird) Script hier eine Variable übergebe???:
Code: Alles auswählen
#Temp_Datei anlegen
import shutil
from tempfile import mktemp
#Source in Temp_Datei umwandeln
source_path = input('Path to source files: ')
final_path = mktemp(prefix='tmp_iso_', dir='/media')
shutil.copytree(source_path, final_path)
#Datei editieren
Hier z.B. den Quell-Pfad "source_path = input('Path to source files: ')"
Danke im vorraus
Re: Übergabe von Variablen
Verfasst: Donnerstag 2. Mai 2013, 19:16
von BlackJack
@RSMVDL: Schau Dir mal das `argparse`-Modul an.
Re: Übergabe von Variablen
Verfasst: Donnerstag 2. Mai 2013, 20:02
von RSMVDL
okay ich habe es jetzt gepeilt aber wie kann ich die variablen benenn?
so gehts ja nicht:
Code: Alles auswählen
import sys
ip=(sys.argv[1:ip1])
dns=(sys.argv[2:dns1])
print(ip1 ,"and",dns1)
wenn ich das script so aufrufe:
python3 datei.py ip 192.12 dns 255.255
Re: Übergabe von Variablen
Verfasst: Donnerstag 2. Mai 2013, 20:06
von BlackJack
@RSMVDL: Ganz offensichtlich hast Du es *nicht* gepeilt. Das ist weder das `argparse`-Modul, noch wie Listen funktionieren. Denn das ist `sys.argv`, eine Liste.
Re: Übergabe von Variablen
Verfasst: Donnerstag 2. Mai 2013, 20:10
von RSMVDL
Ja stimmt auch das ich das Modul nicht benutzte gut erkannt! ich will ja auch nur wissen ob die Möglichkeit besteht die variablen die übergeben werden zu benenn und das nicht nur anhand der Reihenfolge 1,2,3,4 etc. festzumachen
Re: Übergabe von Variablen
Verfasst: Donnerstag 2. Mai 2013, 20:37
von RSMVDL
Und warum funkt das jetzt nicht?
Code: Alles auswählen
#Temp_Datei anlegen
import shutil
import string
from tempfile import mktemp
import argparse
#Source in Temp_Datei umwandeln (Paramterübergabe mit --source & --destination)
source_path = argparse.add_argument('--source', type=string)
destination_path = argparse.add_argument('--destination', type=string)
final_path = mktemp(prefix='tmpisosys', dir=destination_path)
shutil.copytree(source_path, final_path)
Fehlermeldung:
Code: Alles auswählen
source_path = argparse.add_argument(argument='--source', type=string)
AttributeError: 'module' object has no attribute 'add_argument'
Re: Übergabe von Variablen
Verfasst: Donnerstag 2. Mai 2013, 21:25
von Sirius3
@RSMVDL: Die Dokumentation ist zum Lesen da.
Re: Übergabe von Variablen
Verfasst: Donnerstag 2. Mai 2013, 23:00
von RSMVDL
Mal so ne frage ist das dann nicht nur für python 2.7?
Re: Übergabe von Variablen
Verfasst: Donnerstag 2. Mai 2013, 23:05
von BlackJack
@RSMVDL: Seit Python 2.7 ist es in der Standardbibliothek.
Re: Übergabe von Variablen
Verfasst: Freitag 3. Mai 2013, 10:31
von RSMVDL
Hab mich da jetzt nochmals vorgeklemmt und ja ich bin anscheinend zu dumm!
Ich gebe es offen zu
Code: Alles auswählen
#Temp_Datei anlegen
import shutil
import string
from tempfile import mktemp
import parser
import argparse
#Source in Temp_Datei umwandeln (Paramterübergabe mit --source & --destination)
parser = argparse.ArgumentParser(description='Process some integers.')
source_path=parser.add_argument('--source','-s',action="store_true", help='Angabe Quellpfad durch -s oder --source')
destination_path=parser.add_argument('--destination','-d',action="store_true", help='Angabe Zielpfad durch -d --destination')
final_path = mktemp(prefix='tmpisosys', dir=destination_path)
shutil.copytree(source_path, final_path)
Re: Übergabe von Variablen
Verfasst: Freitag 3. Mai 2013, 11:18
von /me
RSMVDL hat geschrieben:Hab mich da jetzt nochmals vorgeklemmt und ja ich bin anscheinend zu dumm!
Du haust da irgendwelchen Code zusammen in der Hoffnung, dass es vielleicht irgendwann laufen wird. So funktioniert Softwareentwicklung nicht. Wenn du anhand der Klassen- und Funktionsdefinitionen nicht weiterkommst, dann suche sauberen Code in dem die gewünschten Elemente eingesetzt werden..
Die Dokumentation zu argparse hat direkt zu Beginn ein Beispiel. Weitere Beispiele folgen weiter unten auf der Seite.
Um einen schnell zusammengehauenen Ansatz zu geben:
Code: Alles auswählen
import argparse
parser = argparse.ArgumentParser(description='Handle stuff.')
parser.add_argument('--source', '-s',
action='store',
help='Angabe Quellpfad durch -s oder --source')
parser.add_argument('--destination', '-d',
action='store',
help='Angabe Zielpfad durch -d oder --destination')
args = parser.parse_args()
print(args.source)
print(args.destination)
Re: Übergabe von Variablen
Verfasst: Freitag 3. Mai 2013, 11:28
von RSMVDL
Danke für den Link dieser bezieht sich auf Python 2.7.4 kann ich das genau so unter 3.3.1 benutzen?
Re: Übergabe von Variablen
Verfasst: Freitag 3. Mai 2013, 11:30
von /me
RSMVDL hat geschrieben:Danke für den Link dieser bezieht sich auf Python 2.7.4 kann ich das genau so unter 3.3.1 benutzen?
Auf der Webseite gibt es oben links in der Ecke eine Combobox mit Versionsnummern. Beim Umschalten auf 3.3 landest du da:
http://docs.python.org/3.3/library/argp ... ml#example
Re: Übergabe von Variablen
Verfasst: Freitag 3. Mai 2013, 11:38
von RSMVDL
Hab ich bereits gefunden!

Nein kein Plan ich kapier es einfach nicht! Ich will es ja raffen aber kp
Das kann doch nicht so schwer sein den Script 2 Pfade zu übergeben!
Ich verzweifel hier gerade voll.
Ich will nix weiter als das scrip aufrufen in form von
"python datei.py -s pfadquelle -d pfadziel"
Kopieren....
Fertig!
Re: Übergabe von Variablen
Verfasst: Freitag 3. Mai 2013, 11:45
von /me
RSMVDL hat geschrieben:Das kann doch nicht so schwer sein den Script 2 Pfade zu übergeben!
Hast du mein Beispiel mal ausprobiert?
Re: Übergabe von Variablen
Verfasst: Freitag 3. Mai 2013, 12:01
von RSMVDL
Soo mein Gode sieht jetzt so aus
Code: Alles auswählen
import shutil
from tempfile import mktemp
import argparse
parser = argparse.ArgumentParser(description='Handle stuff.')
parser.add_argument('--source', '-s',
action='store',
help='Angabe Quellpfad durch -s oder --source')
parser.add_argument('--destination', '-d',
action='store',
help='Angabe Zielpfad durch -d oder --destination')
args = parser.parse_args()
print(args.source)
print(args.destination)
final_path = mktemp(prefix='tmpisosys', dir=args.destination)
shutil.copytree(args.source, final_path)
Meine CMD Fehlermeldung:
Code: Alles auswählen
C:\Users\linden.rvdl\Downloads>python test.py --source C:\Users\Public\Music\Sam
ple Music\Kalimba.mp3 --destination C:\Users\linden.rvdl\Downloads
usage: test.py [-h] [--source SOURCE] [--destination DESTINATION]
test.py: error: unrecognized arguments: Music\Kalimba.mp3
Haste ne Idee?
wenn ich die Pfade als String übergebe dann kommt folgende meldung:
Code: Alles auswählen
C:\Users\linden.rvdl\Downloads>python test.py --source C:\Users\Public\Music\Sam
ple Music\Kalimba.mp3 --destination C:\Users\linden.rvdl\Downloads
usage: test.py [-h] [--source SOURCE] [--destination DESTINATION]
test.py: error: unrecognized arguments: Music\Kalimba.mp3
Re: Übergabe von Variablen
Verfasst: Freitag 3. Mai 2013, 12:04
von BlackJack
@RSMVDL: Sind das denn überhaupt Optionen? Wenn man beide Pfade angeben *muss* dann schau einfach ob die Länge von `sys.argv` stimmt, und wenn ja, dann weise die beiden passenden Elemente den Namen zu und das war's.
Edit: Überlege mal woran Python unterscheiden können soll, ob ein Leerzeichen zwei Argumente trennt, oder ob es Teil eines Wertes ist. Für den Text, den Du über die Anfrage nach Mitstreitern für's CloudComputing losgelassen hat, scheinst Du bei Deiner Erfahrung dort masslos übertrieben zu haben, denn sonst würdest Du so eine fundamentale Frage zum Thema Kommandozeilenaufrufe nicht stellen.
Re: Übergabe von Variablen
Verfasst: Freitag 3. Mai 2013, 12:04
von RSMVDL
@BlackJack
Ich brauchte bis dato einfach nicht groß Sachen zu Coden. Jetzt aber schon!
Ich sehe daran nichts verwerfliches... Ich weiß was ich kann und was nicht! Python anscheinend ja nicht!
Bashscripte funken bei mir ohne Probleme. Derzeit arbeite ich aber mit den Mist-system Windoof auf welchem ich die CMD so ziemlich noch nie benutzt habe!
Und ich kann dir Brief und Siegel darauf geben das ich von Dingen wie ESXi oder KVM bis hin zu GFS und DRBD um einiges mehr weiß als manch anderer. Ich hör von dir immer nur klasse Sprüche was ich mir durchlesen soll und glaub mir das tuhe ich. Ich habe zum Code einfach keinen Bezug also hör bitte auf mir das ständig vor die Birne zu klatschen!
Ich lern am besten wenn ich Direkte Bezugs-Beispiele habe! Fertig!
Re: Übergabe von Variablen
Verfasst: Freitag 3. Mai 2013, 12:26
von mcdwerner
C:\Users\linden.rvdl\Downloads>python test.py --source C:\Users\Public\Music\Sample Music\Kalimba.mp3 --destination C:\Users\linden.rvdl\Downloads
Wenn Du die Frage "Wieviele Argumente werden hier übergeben?" beantworten kannst, dann kennst Du auch die Lösung für Dein Problem!
Re: Übergabe von Variablen
Verfasst: Freitag 3. Mai 2013, 12:32
von RSMVDL
@ All DANKE!
Mit Hilfe konnte ich den Quatsch jetzt endlich fertig bekommen! Ich danke Herzlich!
Code: Alles auswählen
#Temp_Datei anlegen
import shutil
from tempfile import mktemp
import argparse
#Source in Temp_Datei umwandeln (Paramterübergabe mit --source & --destination)
parser = argparse.ArgumentParser(description='Process some integers.')
source_path=parser.add_argument('--source','-s',action="store_true", help='Angabe Quellpfad durch -s oder --source')
destination_path=parser.add_argument('--destination','-d',action="store_true", help='Angabe Zeilpfad durch -d --destination')
final_path = mktemp(prefix='tmpisosys', dir=destination_path)
shutil.copytree(source_path, final_path)
Sollte nur darauf gucken das man nicht 2000 Verzeichnisse ineinander schachtelt