python查找指定具有相同内容文件的方法
本文实例讲述了python查找指定具有相同内容文件的方法。分享给大家供大家参考。具体如下:
python代码用于查找指定具有相同内容的文件,可以同时指定多个目录
调用方式:python doublesdetector.py c:\;d:\;e:\ > doubles.txt
# Hello, this script is written in Python - http://www.python.org # doublesdetector.py 1.0p import os, os.path, string, sys, sha message = """ doublesdetector.py 1.0p This script will search for files that are identical (whatever their name/date/time). Syntax : python %s <directories> where <directories> is a directory or a list of directories separated by a semicolon (;) Examples : python %s c:\windows python %s c:\;d:\;e:\ > doubles.txt python %s c:\program files > doubles.txt This script is public domain. Feel free to reuse and tweak it. The author of this script Sebastien SAUVAGE <sebsauvage at sebsauvage dot net> http://sebsauvage.net/python/ """ % ((sys.argv[0], )*4) def fileSHA ( filepath ) : """ Compute SHA (Secure Hash Algorythm) of a file. Input : filepath : full path and name of file (eg. 'c:\windows\emm386.exe') Output : string : contains the hexadecimal representation of the SHA of the file. returns '0' if file could not be read (file not found, no read rights...) """ try: file = open(filepath,'rb') digest = sha.new() data = file.read(65536) while len(data) != 0: digest.update(data) data = file.read(65536) file.close() except: return '0' else: return digest.hexdigest() def detectDoubles( directories ): fileslist = {} # Group all files by size (in the fileslist dictionnary) for directory in directories.split(';'): directory = os.path.abspath(directory) sys.stderr.write('Scanning directory '+directory+'...') os.path.walk(directory,callback,fileslist) sys.stderr.write('\n') sys.stderr.write('Comparing files...') # Remove keys (filesize) in the dictionnary which have only 1 file for (filesize,listoffiles) in fileslist.items(): if len(listoffiles) == 1: del fileslist[filesize] # Now compute SHA of files that have the same size, # and group files by SHA (in the filessha dictionnary) filessha = {} while len(fileslist)>0: (filesize,listoffiles) = fileslist.popitem() for filepath in listoffiles: sys.stderr.write('.') sha = fileSHA(filepath) if filessha.has_key(sha): filessha[sha].append(filepath) else: filessha[sha] = [filepath] if filessha.has_key('0'): del filessha['0'] # Remove keys (sha) in the dictionnary which have only 1 file for (sha,listoffiles) in filessha.items(): if len(listoffiles) == 1: del filessha[sha] sys.stderr.write('\n') return filessha def callback(fileslist,directory,files): sys.stderr.write('.') for fileName in files: filepath = os.path.join(directory,fileName) if os.path.isfile(filepath): filesize = os.stat(filepath)[6] if fileslist.has_key(filesize): fileslist[filesize].append(filepath) else: fileslist[filesize] = [filepath] if len(sys.argv)>1 : doubles = detectDoubles(" ".join(sys.argv[1:])) print 'The following files are identical:' print '\n'.join(["----\n%s" % '\n'.join(doubles[filesha]) for filesha in doubles.keys()]) print '----' else: print message
希望本文所述对大家的Python程序设计有所帮助。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Mobile XMLからPDFへの速度は、次の要因に依存します。XML構造の複雑さです。モバイルハードウェア構成変換方法(ライブラリ、アルゴリズム)コードの品質最適化方法(効率的なライブラリ、アルゴリズムの最適化、キャッシュデータ、およびマルチスレッドの利用)。全体として、絶対的な答えはなく、特定の状況に従って最適化する必要があります。

単一のアプリケーションで携帯電話でXMLからPDF変換を直接完了することは不可能です。クラウドサービスを使用する必要があります。クラウドサービスは、2つのステップで達成できます。1。XMLをクラウド内のPDFに変換し、2。携帯電話の変換されたPDFファイルにアクセスまたはダウンロードします。

C言語に組み込みの合計機能はないため、自分で書く必要があります。合計は、配列を通過して要素を蓄積することで達成できます。ループバージョン:合計は、ループとアレイの長さを使用して計算されます。ポインターバージョン:ポインターを使用してアレイ要素を指し示し、効率的な合計が自己概要ポインターを通じて達成されます。アレイバージョンを動的に割り当てます:[アレイ]を動的に割り当ててメモリを自分で管理し、メモリの漏れを防ぐために割り当てられたメモリが解放されます。

XML構造が柔軟で多様であるため、すべてのXMLファイルをPDFSに変換できるアプリはありません。 XMLのPDFへのコアは、データ構造をページレイアウトに変換することです。これには、XMLの解析とPDFの生成が必要です。一般的な方法には、ElementTreeなどのPythonライブラリを使用してXMLを解析し、ReportLabライブラリを使用してPDFを生成することが含まれます。複雑なXMLの場合、XSLT変換構造を使用する必要がある場合があります。パフォーマンスを最適化するときは、マルチスレッドまたはマルチプロセスの使用を検討し、適切なライブラリを選択します。

XMLフォーマットツールは、読みやすさと理解を向上させるために、ルールに従ってコードを入力できます。ツールを選択するときは、カスタマイズ機能、特別な状況の処理、パフォーマンス、使いやすさに注意してください。一般的に使用されるツールタイプには、オンラインツール、IDEプラグイン、コマンドラインツールが含まれます。

携帯電話でXMLをPDFに直接変換するのは簡単ではありませんが、クラウドサービスの助けを借りて実現できます。軽量モバイルアプリを使用してXMLファイルをアップロードし、生成されたPDFを受信し、クラウドAPIで変換することをお勧めします。クラウドAPIはサーバーレスコンピューティングサービスを使用し、適切なプラットフォームを選択することが重要です。 XMLの解析とPDF生成を処理する際には、複雑さ、エラー処理、セキュリティ、および最適化戦略を考慮する必要があります。プロセス全体では、フロントエンドアプリとバックエンドAPIが連携する必要があり、さまざまなテクノロジーをある程度理解する必要があります。

XMLは、XSLTコンバーターまたは画像ライブラリを使用して画像に変換できます。 XSLTコンバーター:XSLTプロセッサとスタイルシートを使用して、XMLを画像に変換します。画像ライブラリ:PILやImageMagickなどのライブラリを使用して、形状やテキストの描画などのXMLデータから画像を作成します。

XMLをPDFに直接変換するアプリケーションは、2つの根本的に異なる形式であるため、見つかりません。 XMLはデータの保存に使用され、PDFはドキュメントを表示するために使用されます。変換を完了するには、PythonやReportLabなどのプログラミング言語とライブラリを使用して、XMLデータを解析してPDFドキュメントを生成できます。
