Ich habe ein Python-Skript, das funktioniert gut, wenn ich es in dem Ordner ausführen, der die Dateien enthält, die ich brauche. Aber ich möchte das Skript ändern, dass es in jeden Unterordner geht, die Dateien pro Unterordner verwendet und eine Ausgabedatei in jeden Unterordner schreibt. Ich habe über os.walk usw. gelesen, aber ich verstehe nicht, wie ich mein Skript ändern kann, dass os.walk funktioniert. Bitte hilf mir. Das Skript wird al folgt:Python; Scripte in allen Unterordnern ausführen
d1 = {}
with open('genes.gff.genespercontig.csv', 'r') as f:
for line in f:
tok = line.split()
d1[tok[1]] = int(float(tok[0]))
d2 = {}
with open('hmmer.analyze.txt.result.txt', 'r') as f2:
for line in f2:
tak = line.split()
d2[tak[1]] = int(float(tak[0]))
from itertools import chain
from collections import defaultdict
d3 = defaultdict(list)
for k, v in chain(d1.items(), d2.items()):
d3[k].append(v)
import csv
with open('output_contigsvsgenes.csv', 'w') as f:
writer = csv.writer(f)
for k,v in d3.items():
writer.writerow([k] + v)
Vielen Dank für Ihre Hilfe, aber wenn ich das versuche, bekomme ich den folgenden Fehler: IOError: [Errno 2] Keine solche Datei oder Verzeichnis: './genes.gff.genespercontig.csv'. Ich bin mir sehr sicher, dass sich die Dateien in jedem Unterverzeichnis befinden, aber es scheint, dass das Skript sie nicht finden kann. – Gravel
Ich habe das zweite Beispiel bearbeitet, um alle Fehler zu erfassen, nicht nur Namensfehler. Hoffentlich sollte sich das kümmern. Wenn Sie sicher sind, dass die Dateien vorhanden sind, sie aber nicht finden können, versuchen Sie, die Dateivariable zu drucken, um sicherzustellen, dass sie tatsächlich da sind. – WillySchu
Es tut mir leid, aber auch das zweite Beispiel gibt den gleichen Fehler – Gravel