import os
os.path.join(
)# 合併路徑
os.path.expanduser(
'~')
# 獲取當前使用者路徑
os.listdir(
)# 獲取當前路徑檔名
os.path.split(
)# 拆分路徑 & 檔名
os.path.exists(
)# 檢查絕對路徑檔案是否存在
os.rename(old, new)
# 修改檔名(絕對路徑)
import time
time.time(
)# 時間戳
time.sleep(
)# 睡眠
time.localtime(
)# 本地時間
time.strftime(
'%y%m%d'
, time.localtime())
# 轉換為指定字串格式
import shutil
shutil.move(old, new)
# 移動檔案
map
(lambda x:x, lis)
# 返回iteror,lambda作用於lis中的每個元素
for n, l in
enumerate
(lis)
# 返回n & 元素l
dict
(zip
(list1, list2)
)# 合併list1 & list2為字典
@staticmethod
# 靜態方法 # 類方法採用cls開頭
# 在類中定義的方法都是物件方法,都是傳送給物件的訊息
# 靜態方法和類方法都是通過給類發訊息來呼叫的
# 呼叫靜態方法時需要使用類名: file.strtime()
# -*- coding: utf-8 -*-
"""created on thu feb 25 10:25:59 2021
@author: chen.huaiyu
1.識別檔案;
2.修改檔名:輸入起始日期;
3.移動到h盤
"""import os
import time
import shutil
class
file()
:def
__init__
(self)
: self.path = os.path.join(os.path.expanduser(
'~')
,'downloads'
) self.f_dst = r'h:\sz_資料\download'
self.lis =
['p4p'
,'無線_'
,'cash_'
,'無線消費'
,'basicinfo'
,'消費報告'
] self.dat =
input
('輸入起止日期,如:20210101_20210102\n\a'
)def
getdirlist
(self)
:return os.listdir(self.path)
deffilterrefname
(self)
:return
[f for a in self.lis for f in self.getdirlist(
)if a in f]
defgetabspath
(self)
:return
list
(map
(lambda x: os.path.join(self.path, x)
, self.filterrefname())
) @staticmethod
defstrtime
(t=time.time())
:return time.strftime(
'%y%m%d'
, time.localtime(t)
)def
filterrefmtime
(self)
:return
[f for f in self.getabspath(
)if file.strtime(os.path.getmtime(f)
)== file.strtime()]
defnewname
(self)
: lis =
[os.path.split(i)[-
1]for i in self.filterrefmtime()]
for n, name in
enumerate
(lis):if
'p4p'
in name:
lis[n]
='p4p_'
+ self.dat +
'.csv'
elif
'無線_'
in name and
'cash'
notin name:
lis[n]
='無線_'
+ self.dat +
'.csv'
elif
'無線消費'
in name:
lis[n]
='無線_'
+ self.dat +
'cash.csv'
elif
'cash_'
in name:
lis[n]
='cash_'
+ self.dat +
'.csv'
elif
'basicinfo'
in name:
lis[n]
='消費報告 '
+ self.dat +
'.csv'
return lis
defnewabspath
(self)
:return
list
(map
(lambda x: os.path.join(self.path, x)
, self.newname())
)def
rename
(self)
: dic =
dict
(zip
(self.filterrefmtime(
), self.newabspath())
)for old in self.filterrefmtime():
ifnot os.path.exists(dic[old]):
os.rename(old, dic[old]
)def
movetoabspath
(self)
:return
[os.path.join(self.f_dst, i)
for i in self.newname()]
defmove
(self)
: dic =
dict
(zip
(self.newabspath(
), self.movetoabspath())
)for old in self.newabspath():
if os.path.exists(old)
andnot os.path.exists(dic[old]):
shutil.move(old, dic[old]
)else
:print
('move(): fault - %s'
% old)
if __name__ ==
'__main__'
: func = file(
) func.rename(
) func.move(
)
python修改檔名
如果用bat寫,實在煩人,本人尤其討厭bat那套寫法,感覺完全是亂碼,寫個小指令碼實現把所有目錄下以 cc的字尾名的檔案全部更改為 c型別,當然如果是其它型別,一樣地處理 只需把filetype filetype 1 按所需處理 即可。coding utf 8 import os import re...
python批量修改檔名
修改前 flv檔案是從rar檔案中解壓出來的。由於英文不好,並且有的flv檔案的名字並不十分清晰明了,所以打算將flv檔案名字改為相應的rar檔案的名字。僅供參考,新手勿噴 主要使用了python中的re 正規表示式 和os模組中的函式。coding gb2312 import os import ...
python批量修改檔名
最近工作需要給大量檔案改名。恰巧,本人又在自學python,所以就想用python寫個程式來自動修改相應的檔名。下面就通過 來介紹一下我的做法吧。先說一下,我的工作要求是,在所有的資料檔案前加上資料所在資料夾的名字,改完名字後把所有的檔案彙總到乙個新的資料夾。我要處理的檔案有的存放在次最後層目錄 有...