python 3常用モジュール(時間、osパスおよびファイル操作、文字列比較、ファイル内容比較などのモジュール)

8181 ワード

pythonには多くのモジュールがあり、様々な機能を実現するために、pythonを学ぶには、個人的に最も重要なのはモジュールの機能を熟練し、柔軟に応用することであり、まず基礎モジュールを把握しなければならないと思います.
本明細書の主なモジュールは、時間のモジュール(time,datetimeおよびcalendar)、osモジュール(パス操作モジュールos.path、読み書きファイルモジュールopen()、複数のファイル読み書き処理モジュールfileinput、現在のファイルモジュールtempfileの作成など)、ファイル自体の情報アクセスosを含む.stat(path)と文字列の読み出しtextwrapモジュール、文字列比較モジュールdifflib、ファイル比較モジュールfilecmp.
1.時間のモジュール(time,datetime,calendar)
この3つのモジュールはpythonの時間に対する処理であり、時間のアクセス、時差計算、カレンダーの表示などが含まれています.一般的な操作は次のとおりです.
<span style="font-size:12px;">import time
import datetime
import calendar

now  = datetime.datetime.now()
print(now.strftime('%Y-%m-%d %H:%M:%S')) #    、     (        )

time_strA = '2014-07-29 01:15:00'
time_strB ='2014-08-29 01:15:00'
#  .strptime()                 
day = datetime.datetime.strptime(time_strA, '%Y-%m-%d %H:%M:%S')
day2 = datetime.datetime.strptime(time_strB, '%Y-%m-%d %H:%M:%S')
sub_day = day2 - day
print('{0} {1}  {2} '.format(time_strA, time_strB, str(sub_day.days)))
#      datetime.timedelta()            
N=3
M = 1
N_date = datetime.timedelta(weeks = 1,days = N)
day = now + N_date
print(day.strftime('%Y-%m-%d %H:%M:%S'))</span>
<pre name="code" class="python"><span style="font-size:12px;">
</span>
<span style="font-size:12px;">#       
calendar.month(year, month)
calendar.calendar(year)
calendar.isleap(year)#       
calendar.monthrange(year, month)#          
calendar.monthcalendar(year, month)#      </span>
 
  
  
 


2. os模块

     首先,这个模块为操作系统的函数模块,涵盖其他的许多模块,如:路径操作模块os.path,读写文件模块open(),多个文件读写处理模块fileinput,创建当前文件模块tempfile等。


A . os和os.path模块常见运用

<span style="font-size:12px;">import os
pa = os.getcwd()#        
print(os.listdir(pa))#  pa          
path = r'C:\test.html'
print(os.path.abspath(path)) #    
print(os.path.dirname(path)) #         
print(os.path.getatime(path)) #        ,       ,          
print(os.path.isfile(path))#       ,       os.path.split(path)、os.<tt class="descclassname">path.</tt><tt class="descname">splitext</tt><big>(</big><em>path</em><big>)</big>   os.path.jion()
print(os.path.exists(path))#        
print(os.path.isdir(path)) #      
print(os.path.getsize(path))#    </span>

B.ファイル操作open()、fileinput及びtempfileモジュール
最も一般的なのは、バイナリの読み書きを含む単一ファイルの読み書き操作です.open()は次のとおりです.
<span style="font-size:12px;">import os
path = r'C:\test.html'

fp = open(path,'w+')#     
#fp = open(path,'w+b')       
content = 'adf'
fp.write(content)
fp.flush()
fp.close()
fp = open(path,'r+')# 
print('    :{0}    :{1}'.format(path,fp.readlines())) </span>

fileinputモジュールが複数のファイルを処理する場合、パスストアtupleタイプは以下のようになります.
<span style="font-size:12px;">import os
import fileinput

paths = (r'C:\test.html',r'C:\test.txt')

fp = fileinput.input(paths) #  
lines = ''
names = []
for line in fp:
    lines +=line  #             lines 
    name = fileinput.filename()#   
    names.append(name)
print(lines)
</span>

tempfileキャッシュにゼロタイムファイル(クリップ)を作成し、
他のプログラムはキャッシュ内のゼロタイムファイルを共有できません.
参照されていないため
ファイルシステムテーブル.使用する
TemporaryFile
この関数で作成された一時ファイルは、ファイルを閉じると
自動的に削除されます.
import os
import tempfile

path = r'C:\test.%s.txt'%os.getpid()

fp = open(path,'w+b') #  
content = b'ccc'  #         
fp.write(content)
fp.close()
os.remove(path) #        
# TemporaryFile   ,         
fil = tempfile.TemporaryFile()
fil.write(b'ddd')
fil.seek(0)
print(fil.read())
fil.close() #   ,        

3.ファイル自体の情報アクセスos.stat(path)と文字列の読み出し
textwrapモジュール、文字列比較モジュールdifflibおよびファイル比較モジュールfilecmp
os.stat(path)はファイル自体の情報へのアクセスであり、次のような属性があります.
import os
import stat
st_mode    -- protection
st_ino     -- inode number(   )
st_nlink   -- number of hard links(    )
st_uid     -- user id of owner(  id)
st_gid     -- group id of owner ( id)
st_size    -- size of file,in bytes (  )
st_atime   -- time of most recent access expressed in seconds (    )
st_mtime   -- time of most recent content modificatin expressed in seconds (    )
st_ctime
#     
os.stat(path).st_size   os.stat(path)[stat.ST_SIZE]
           。
文字列はtextwrapを読み出し、wrap()、fill()、dedent()などの方法を含む.
import textwrap

test_content = '''dakjhdklghkjaghsaghskghskfh'''
print(textwrap.wrap(test_comntent,5))#    test_content   5     
print(textwrap.fill(test_conten,10))#    test_content   10           
print(textwrap.dedent(test_conten))#     ,        ,      

ファイル内容、文字列比較モジュールdifflibは、比較後、モジュールHtmlDiffモジュールでファイルに表示することができる.html内(表):
import difflib
import os
from difflib import HtmlDiff
if os.path.exists('C:\\test.html'):
    with open('C:\\test.html','w+') as fp:
        test = HtmlDiff.make_file(HtmlDiff(), 'hello world!', 'hElLO Wor2d!')
        fp.write(test)
        print('      !')
        fp.close()
#    
test = difflib.Differ().compare('hello world', 'HeLLO,wOrlD!')
print('    :')
print(''.join(list(test)))

ファイルの内容を比較するfilecmpモジュールもあります.転載元:http://scm002.iteye.com/blog/1662812
filecmpモジュールはファイルとフォルダの内容を比較するために使用され、軽量レベルのツールであり、非常に簡単に使用できます.python標準ライブラリでは、difflibモジュールを使用してファイルの内容を比較することもできます.difflibモジュールについては、次回の分解を聞いてください.
filecmpは、ファイルとフォルダを簡単に比較するための2つの関数を定義します.
filecmp.cmp(f1, f2[, shallow]):
2つのファイルの内容が一致しているかどうかを比較します.パラメータf 1,f 2は、比較するファイルのパスを指定する.オプションパラメータshallowは、ファイルを比較する際にファイル自体の属性を考慮する必要があるかどうかを指定します(os.stat関数でファイル属性を取得できます).ファイルの内容が一致する場合、関数はTrueを返します.そうでない場合はFalseを返します.
filecmp.cmpfiles(dir1, dir2, common[, shallow]):
2つのフォルダ内の指定ファイルが等しいかどうかを比較します.パラメータdir 1,dir 2は比較するフォルダを指定し,パラメータcommonは比較するファイル名リストを指定する.関数は、一致、不一致、およびエラーを表す3つのlist要素を含むメタグループを返します.誤ったファイルとは、存在しないファイル、またはファイルが煩雑に読み取り不能になったり、ファイルを読む権限がなかったり、他の理由でアクセスできなかったりすることを意味します.
filecmpモジュールでは、フォルダを比較するdircmpクラスが定義されています.このクラスで2つのフォルダを比較することで、Aフォルダにのみ存在するファイルリストなどの詳細な比較結果を取得し、サブフォルダの再帰比較をサポートできます.
dircmpは、比較の結果を報告するための3つの方法を提供します.
Report():指定したフォルダの内容(ファイルとフォルダ)のみを比較するreport_partial_closure():フォルダおよび第1レベルのサブフォルダの内容を比較するreport_full_closure():すべてのフォルダの内容を再帰的に比較する例:フォルダ「1」にはファイル「1.txt」が含まれ、フォルダ「2」にはファイル「1.txt」と「2.txt」が含まれ、その2つのフォルダの下のファイル「1.txt」の内容は同じである、
>>>import filecmp
>>>x = filecmp.dircmp("1", "2")
>>>x.report()
>>>
diff 1 2
Only in 2 : ['2.txt']
Identical files : ['1.txt']

2つのフォルダの下のファイル「1.txt」の内容が異なる場合、結果は次のようになります.
>>>import filecmp
>>>x = filecmp.dircmp("1", "2")
>>>x.report()
>>>
diff 1 2
Only in 2 : ['2.txt']
Differing files : ['1.txt'] 

dircmpでは、比較の詳細な結果を取得するための次の属性も提供されます.
left_List:左側のフォルダのファイルとフォルダのリスト;
right_List:右フォルダのファイルとフォルダのリスト;
common:両方のフォルダに存在するファイルまたはフォルダ;
left_only:左側のフォルダにのみ存在するファイルまたはフォルダ;
right_only:右のフォルダにのみ存在するファイルまたはフォルダ.
common_dirs:両方のフォルダに存在するサブフォルダ;
common_files:両方のフォルダに存在するサブファイル;
common_funny:両方のフォルダに存在するサブフォルダ;
same_files:一致するファイル;
diff_files:一致しないファイル;
funny_files:両方のフォルダに存在しますが、比較できないファイル.
subdirs:私はこの属性の意味を理解していません.pythonマニュアルの解釈は以下の通りです.A dictionary mapping names in common_dirs to dircmp objects
簡単で美しい!私はファイルを比較した結果、ファイルがどのように比較されているか気にしたくないので、hey、pythonを使いましょう~~