python3的一些檔案操作的腳手架

2022-08-20 06:36:12 字數 2859 閱讀 8976

用python把原來的指令碼重構了一下,其中寫了檔案操作的一些函式,如下:

import

osimport

shutil

import

hashlib

import

stat

#查詢檔案夾中的某個檔案

deffindmyfiledir(dirpath, findfile):

files =

dirs =

for root, dirs, files in os.walk(dirpath, topdown=false):

for file in

files:

if file ==findfile:

return

root

for dir in

dirs:

findmyfiledir(os.path.join(root, dir), findfile)

#建立乙個資料夾

defcreatedir(dirpath):

os.makedirs(dirpath, exist_ok=true)

#刪除乙個檔案

defdelfile(filepath):

ifos.path.exists(filepath):

os.remove(filepath)

#刪除資料夾裡所有的檔案

defdeldir(dir):

if(os.path.isdir(dir)):

for f in

os.listdir(dir):

deldir(os.path.join(dir, f))

if(os.path.exists(dir)):

os.rmdir(dir)

else

:

if(os.path.exists(dir)):

os.remove(dir)

#拷貝檔案

defcopyfile(sourcefilepath, destfilepath):

ifnot

(os.path.exists(sourcefilepath)):

return

false

ifos.path.exists(destfilepath):

if getfilemd5(sourcefilepath) ==getfilemd5(destfilepath):

return

true

else

: os.remove(destfilepath)

destfiledir =os.path.dirname(destfilepath)

os.makedirs(destfiledir, exist_ok=true)

ifnot(shutil.copyfile(sourcefilepath, destfilepath, follow_symlinks=false)):

return

false

return

true

#拷貝資料夾裡的檔案

defcopydir(sourcedir, destdir):

ifnot

(os.path.exists(sourcedir)):

return

false

ifos.path.exists(destdir):

shutil.rmtree(destdir)

ifnot(shutil.copytree(sourcedir, destdir, symlinks=true)):

return

false

return

true

#獲取檔案的md5

defgetfilemd5(filepath):

with open(filepath, 'rb

') as f:

content =f.read()

hash =hashlib.md5()

hash.update(content)

return

hash.hexdigest()

#獲取乙個資料夾裡的所有的檔案和該檔案對應的md5

defdirlist(dirpath):

listdict ={}

files =

dirs =

for root, dirs, files in os.walk(dirpath, topdown=false, followlinks=true):

for file in

files:

filepath =os.path.join(root, file)

listdict[os.path.relpath(filepath, dirpath).replace(

'\\', '

/')] =getfilemd5(filepath)

for dir in

dirs:

dirlist(os.path.join(root, dir))

return

listdict

#逐行讀乙個檔案,並過來檔案中某些行裡回車和空格

defreadlineforfile(filepath):

f = open(filepath, 'r'

)

lines =f.readlines()

f.close()

newlines =

for line in

lines:

line = line.replace('

\n', ''

).strip()

ifline:

return newlines

python3 的一些筆記

因為使用python越來越頻繁,有一些細節的東西經常用後一段時間沒去用就會忘記,做些簡單的筆記吧。a 0 while 1 a 1 if a 3 0 print aa else print bb continue 後面的全部不執行了 pass 似乎沒影響,cc也會出來 break 直接結束迴圈 pri...

python3的檔案操作

python的檔案操作和php的檔案很類似 file物件使用 open 函式來建立,open的引數 r表示讀,w寫資料,在寫之前先清空檔案內容,a開啟並附加內容,開啟檔案之後記得關閉 下表列出了 file 物件常用的函式 序號方法及描述 file.close 關閉檔案。關閉後檔案不能再進行讀寫操作。...

python3 有關字典的一些用法

如 res a 1 a 2 c 3 d 4 轉為 組成字典,若重複,則是values值相加 res a 1 a 2 c 3 d 4 adict for i in range 0,len res if res i 0 in list adict.keys adict res i 0 int adict...