Python csv writer "AttributeError: __exit__" Problem

Ich habe drei Variablen die ich schreiben möchte in eine tab-getrennte .csv Anhängen jeweils die Werte für das Skript iteriert über eine Schlüssel-Wert aus dem dictionary.

Derzeit ruft das Skript ein Befehl, regex die stdout als out weist dann die drei definierten regex-Gruppen zu den einzelnen Variablen für das schreiben .csv beschriftet first second und third. Bekomme ich einen __exit_ Fehler wenn ich das Skript unten.

/Hinweis: ich habe gelesen, bis auf csv.Schriftsteller und ich bin immer noch verwirrt, ob ich wirklich schreiben mehrere Variablen auf einer Zeile.

Vielen Dank für jede Hilfe können Sie zur Verfügung stellen.

 import csv, re, subprocess

 for k in myDict:
     run_command = "".join(["./aCommand", " -r data -p ", str(k)])
     process = subprocess.Popen(run_command,
                                shell=True,
                                stdout=subprocess.PIPE,
                                stderr=subprocess.PIPE)
     out, err = process.communicate()
     errcode = process.returncode
     pattern = re.compile('lastwrite|(\d{2}:\d{2}:\d{2})|alert|trust|Value')
     grouping = re.compile('(?P<first>.+?)(\n)(?P<second>.+?)([\n]{2})(?P<rest>.+[\n])', 
                           re.MULTILINE | re.DOTALL)


    if pattern.findall(out):         
        match = re.search(grouping, out)
        first = match.group('first')
        second = match.group('second')
        rest = match.group('rest')

     with csv.writer(open(FILE, 'a')) as f:
        writer = csv.writer(f, delimiter='\t')
        writer.writerow(first, second, rest)

Edit: Beantragt in die Kommentare zu posten gesamten traceback, beachten Sie die Zeile aufgeführt, in der traceback nicht mit dem oben genannten code, da dies nicht das gesamte Skript.

Traceback (most recent call last):
File "/mydir/pyrr.py", line 60, in <module>
run_rip()
File "/mydir/pyrr.py", line 55, in run_rip
with csv.writer(open('/mydir/ntuser.csv', 'a')) as f:
AttributeError: __exit__

Antwort: Mit dem nachstehenden Kommentar, den ich in der Lage war, es zu schreiben, wie folgt.

f = csv.writer(open('/mydir/ntuser.csv', 'a'),
                       dialect=csv.excel,
                       delimiter='\t')
f.writerow((first, second, rest))
  • Poste den gesamten traceback-Meldung.
InformationsquelleAutor ImNotLeet | 2016-02-19
Schreibe einen Kommentar