2017-01-25 1 views
-1

So habe ich einen JQ-Befehl, der mein JSON-Array in ein JSON-Objekt konvertiert. Der Befehl arbeitet normalerweise in dem Windows-Terminal, aber wenn ich versuche, es in mein Python-Programm zu implementieren ich diesen: jq: error:JQ-Befehl funktioniert nicht in Python

Could not open file >newfile.json: Invalid argument. 

Hier ist mein jq Kommando, das funktioniert und setzt die json in newfile verwandelt. json:

jq ".[]" data.txt >newfile.json 

Hier ist mein subprocess Aufruf in meinem python-Programm:

subprocess.call('jq ".[]" data.txt >newfile.json', cwd=r'C:/Users/john/Desktop/swag', shell=True) 
+0

Um das Unterprozessmodul zur Handhabung von Shell-Funktionen wie Umleitungen zu veranlassen, müssen Sie '' shell = True'' zum Aufruf hinzufügen. – jasonharper

+0

Ich habe das schon getan tut mir leid, ich habe vergessen, das zu meiner Frage hinzuzufügen, aber es hat mein Problem nicht gelöst. –

+2

Offensichtlich ein Windows-spezifisches Problem. Da es kein Windows-System gibt, mit dem man testen kann, besteht die einfache Antwort darin, eine Lösung zu finden, die es unterlässt, sich auf die Shell zu verlassen, um alles für Sie zu erledigen. –

Antwort

0

Öffnen Sie die Ausgabe-Datei selbst, und Sie werden nicht auf Shell-Verhalten verlassen müssen (das ist offensichtlich (im vorliegenden Fall nicht arbeiten), es für dich zu tun.

subprocess.call(['jq', '.[]', 'data.txt'], 
    cwd=r'C:/Users/john/Desktop/swag', 
    stdout=open('C:/Users/john/Desktop/swag/newfile.json', 'w'))