用python把原來的指令碼重構了一下,其中寫了檔案操作的一些函式,如下:
importosimport
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...