2016-07-26 8 views
0

ディレクトリの下にあるファイルに含まれる文字列を検索しようとしています。次に、ファイル名とディレクトリを新しいテキストファイルなどの下に保存するようにします。 私はディレクトリを通過して文字列を見つけ出し、結果を出力しています。しかし、次のステップの確信。ファイル名とそのディレクトリのパスをPythonを使用してテキストファイルに保存する方法

私は完全にコーディングと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

あなたは(https://mail.python.org/mailman/listinfo/tutor)は、より適切な[Pythonの家庭教師リスト]を見つけるかもしれないcsvファイルに出力を書き込む必要がありますこのような質問のために。 –

答えて

0

辞書を探している場合は、文字列の比較を行わないでください。代わりにjsonモジュールを使用してください。このような。

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

jsonモジュールを使用する場合、違いは何ですか? – Eric

0

これは

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)) 
関連する問題