Im Grunde bin ich mapreduce laufen, also werde ich in den Reducer pipes. Worauf ich Probleme habe, ist, einen Verzeichnispfad anzugeben, den ich mit os.listdir verwenden werde, um im Wesentlichen alle Dateien in diesem Verzeichnis zu erhalten und dann zu berechnen. Aber ich weiß, ich will nur, was im letzten Verzeichnis ist und nicht die Unterverzeichnisse auf derselben Ebene. Ich könnte auch fileinput() verwenden.Kann ich Stdin in Verbindung mit Argv verwenden, wenn ich eine Python-Datei verwende, die in eine andere piped ist?
Ich denke, dass ich stdin hier falsch verwenden kann, hängt davon ab, ob es von der Befehlszeile sein muss oder ob es indirekt von der Befehlszeile sein kann.
Das war meine Eingabezeile: "./path1/path2/path3" ./map.py | sortieren | ./red.py
Was ich als Fehler bekam zu tun, was ich tun möchte, ist -bash, kein Verzeichnis ./pythonfile.py
Python 2.7.2
Dies ist, was ich tue:
def func():
path = sys.argv[0]
return [filenames for filenames in os.listdir(path)if os.path.isfile(os.path.join(path,filenames))]
if func() is not None:
for file in func():
sys.stdin.read()
...etc..
was ist der Zweck des Doppelpunkts? Vielen Dank, aber ich bin mir sicher, dass ich im Wesentlichen den Pfad zum Skript wiedergeben möchte. Wie gehe ich also vor, um mehrere Pfadnamen zu analysieren, um mein letztes Verzeichnis voller Dateien zu erreichen? Ich bin mir nicht sicher, ob ich dein Beispiel mit Tupeln oder Listen verstehe, weil ich nicht wissen werde, welche Dateinamen übergeben werden. Was Argumente angeht, kann ich die Pipe trotzdem so verwenden, wie ich es brauche, wenn ich es so benutze Sind die Argumente auf die gleiche Weise erhalten? Via Stdin oder Argv? – Nightvein
Ah, das '[1:]' war, den ersten Eintrag wegzulassen, da es nur der Name des Skripts ist. (Nicht der Pfad.) Ich muss laufen, aber bedenke einfach, dass ich 'a' für einfaches Testen verwendet habe, Ihre Benutzer werden Werte über' argv [1] ',' argv [2] ', etc. – sarnold