Python 修改檔名,然後移動

2021-10-20 06:22:05 字數 4073 閱讀 2259

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寫個程式來自動修改相應的檔名。下面就通過 來介紹一下我的做法吧。先說一下,我的工作要求是,在所有的資料檔案前加上資料所在資料夾的名字,改完名字後把所有的檔案彙總到乙個新的資料夾。我要處理的檔案有的存放在次最後層目錄 有...