Ich habe einige Probleme mit os.path.join
und einem Windows-System. Ich habe ein Skript erstellt, das rekursiv Dateien mit unstrukturierten JSON-Daten liest, ein Verzeichnis namens "converted_json" erstellt und den Inhalt jeder unstrukturierten JSON-Datei in einem strukturierten Format in eine neue Datei im Verzeichnis "converted_json" druckt.os.path.join Problem Windows
Ich habe das folgende Skript auf macOS getestet und bei der Ausführung werden die strukturierten JSON-Daten in neue Dateien gedruckt und die neuen Dateien werden in das Verzeichnis "converted_json" ausgegeben. Wenn ich das Skript jedoch auf einem Windows-System ausführe, werden die JSON-Daten in neue Dateien gedruckt, aber die Dateien werden nicht in das Verzeichnis "converted_json" ausgegeben.
Wesentlichen die folgenden os.path.joi
n Code erscheint nicht im folgenden Abschnitt unter Windows zu funktionieren:
conv_json = open(os.path.join(converted_dir, str(file_name[-1]) + '_converted'), 'wb')
Die Dateien erstellt werden, aber sie in der „converted_json“ Verzeichnis nicht gespeichert werden, die angegeben wird durch die Variable converted_dir.
Die folgende Ausgabe wird aus dem Drucken des "conv_json" -Variable:
open file 'C: \ Benutzer \ test \ Desktop \ test \ file_name.json.gz.json_converted' Mode 'wb' bei 0x0000000002617930
Wie von oben gesehen, der Dateipfad in der „conv_json“ enthaltene Variable enthält nicht das „converted_json“ Verzeichnis (sollte es dort aus seinem os.path.join verwenden und die converted_dir Variable.
Beliebig Unterstützung, wie die strukturierten Daten zur Ausgabe an "converted_json "Verzeichnis würde sehr geschätzt werden.
-Code unten:
argparser = argparse.ArgumentParser()
argparser.add_argument('-d', '--d', dest='dir_path', type=str, default=None, required=True, help='Directory path to Archive/JSON files')
args = argparser.parse_args()
dir_path = args.dir_path
converted_dir = os.path.join(dir_path, 'converted_json')
os.mkdir(converted_dir, 0777)
for subdir1, dirs1, files1 in os.walk(dir_path):
for file in files1:
try:
if file.endswith(".json"):
file = open(os.path.join(subdir1, file))
file_name = str.split(file.name, '/')
conv_json = open(os.path.join(converted_dir, str(file_name[-1]) + '_converted'), 'wb')
conv_json.write('#################################################################################################################################')
conv_json.write('\n')
conv_json.write('File Name: ' + file_name[-1])
conv_json.write('\n')
conv_json.write('#################################################################################################################################')
conv_json.write('\n')
parsed_json = json.load(file)
s = cStringIO.StringIO()
pprint.pprint(parsed_json, s)
conv_json.write(s.getvalue())
conv_json.close()
except:
print 'JSON Files Not Found'
print 'JSON Processing Completed: ' + str(datetime.datetime.now())
Danke für die schnelle Antwort, ich werde in Ihren Vorschlag schauen. Vielen Dank! – user8685438