2016-07-26 10 views
0

Ich versuche, eine Zeichenfolge zu finden, die in Dateien in einem Verzeichnis enthalten ist. Dann machen Sie es, um seine Dateinamen und Verzeichnisse unter einer neuen Textdatei oder etwas zu speichern. Ich ging bis zu einem Verzeichnis und suchte nach einer Zeichenfolge und druckte dann ein Ergebnis aus. Aber nicht sicher über den nächsten Schritt.So speichern Sie Dateinamen und ihre Verzeichnisse Pfad in einer Textdatei mit Python

Bitte helfen, ich bin völlig neu in der Programmierung und Python.

import glob, os 



#Open a source as a file and assign it as source 
source = open('target.txt').read() 
filedirectories = [] 

#locating the source file and printing the directories. 
os.chdir("/Users/a1003584/desktop") 
for root, dirs, files in os.walk(".", topdown=True): 
    for name in files: 
     print(os.path.join(root, name)) 
     if source in open(os.path.join(root, name)).read(): 
      print 'treasure found.' 
+0

schreiben sollten Sie die [Python Tutor Liste] finden könnte (https://mail.python.org/mailman/listinfo/tutor) geeignetere Für solche Fragen. –

Antwort

0

Führen Sie keinen Zeichenfolgenvergleich durch, wenn Sie nach einem Wörterbuch suchen. Verwenden Sie stattdessen das JSON-Modul. So was.

import json 
import os 

filesFound = [] 

def searchDir(dirName): 
    for name in os.listdir(dirName): 
     # If it is a file. 
     if os.isfile(dirName+name): 
      try: 
       fileCon = json.load(dirName+name) 
      except: 
       print("None json file.") 
      if "KeySearchedFor" in fileCon: 
       filesFound.append(dirName+name) 
     # If it is a directory. 
     else: 
      searchDir(dirName+name+'/') 

# Change this to the directory your looking in. 
searchDir("~/Desktop") 
open("~/Desktop/OutFile.txt",'w').write(filesFound) 
+0

Was genau ist der Unterschied, wenn das JSON-Modul verwendet werden sollte? – Eric

0

Dies die Ausgabe in eine CSV-Datei

import csv 
import os 

with open('target.txt') as infile: source = infile.read() 

with open("output.csv", 'w') as fout: 
    outfile = csv.writer(fout) 
    outfile.writerow("Directory FileName FilePath".split()) 
    for root, dirnames, fnames in os.walk("/Users/a1003584/desktop", topdown=True): 
     for fname in fnames: 
      with open(os.path.join(root, fname)) as infile: 
       if source not in infile.read(): continue 
      outfile.writerow(root, fname, os.path.join(root, fname))