2016-04-16 4 views
-1

mimetypeがJSONでない場合は、Pythonスクリプトを使用してmimetypeを取得します。私のスクリプトの下の部分を参照してくださいPythonのファイルからmimetype JSONを除外するにはどうすればいいですか?

for filepath in files: 
    filename = os.path.basename(filepath) 

    mimetype = mimetypes.guess_type(filepath, strict=False) //here i want to filter out only JSON file and ignore other one 

    version = "0" 
    checksum = "0" 
    fileext = os.path.splitext(filename)[1].lower()  
    # get raw file data 
    with open(filepath, "rb") as fr: 
     filedata = fr.read() 

    oldfilesize = len(filedata) 

上記のコードで私のコメントを参照してください..任意の解像度??? .jsonファイルのMIMEタイプapplication/jsonファイルのメタデータに固有ではないので

+0

ファイルのMIMEタイプを実際に取得することはできません。これは、システムが保持するメタデータではないためです。ファイル拡張子( '.json'を探す)でJSON文書を識別しようとすることはできますが、検査でJSONファイルを識別することは困難です。 – larsks

答えて

1

あなたはこのような何かを試みることができる、かもしれません大きいです。

1

まあ、mimetypesは助けにはなりません。むしろは、それを扱う人にファイルタイプ情報を提供するために使用します。たとえば、HTTP応答ヘッダーのContent-Type: application/jsonは、それがJSONであることをクライアントに通知します。

for filepath in files: 
    filename = os.path.basename(filepath) 

    mimetype = mimetypes.guess_type(filepath, strict=False) 
    if mimetype != ('application/json', None): 
    with open(filepath) as f: 
     try: 
      json.load(f) 
     except ValueError: 
      # It's not json 
      continue 
    # do stuff 

が、ファイルがたくさんある場合、これは非効率的である可能性、および/または、それら:次のように

とにかく、解決策は

import json 
with open("filename", "rt") as f: 
    try: 
     d = json.load(f) # no need to name it if you are just checking 
    except JSONDecodeError: 
     # handle it or just pass 
    else: 
     # Got a json file, do whatever 
関連する問題