办公技巧分享1–有时候文件夹里面的文件太多了,想把他们放在一起怎么办?难道去一个文件夹一个文件夹的剪切或复制?这样也太麻烦了,有时候还会忘记自己操作到哪里了,还要去一个文件夹一个文件夹的看是不是已经剪切完了。于是今天通过自己的一个办法可以实现这个功能,不管你的文件夹有多少个文件夹和文件,用这个程序都可以把它们放在一起!!
代码分享:
import os,shutil,time
class SumFiles():
def __init__(self,path_source,dis_file=""):
self.path_source=path_source
self.dis_file=dis_file
def makedir(self):#判断有无文件夹路径是否存在,不存在则新建文件夹
dis_road=os.path.join(self.path_source,self.dis_file)
if not os.path.isdir(dis_road):
os.mkdir(dis_road)
self.path_destination=dis_road
def dealfile(self):#文件处理,如果有重复文件则改名。
filelist = []#储存所有文件和改名字的文件路径
files = []#储存所有的文件
repeatfiles = []#储存重复的文件
for path, x, filename in os.walk(self.path_source):
for file in filename:
newpath =os.path.join(path,file)
if file in files and file not in repeatfiles:
i = 2
newfile = "(" + str(i) + ") " + file
newpath1 =os.path.join(path,newfile)
os.rename(newpath, newpath1)
newpath = newpath1
repeatfiles.append(file)
elif file in files and file in repeatfiles:
i = 3
newfile = "(" + str(i) + ") " + file
newpath1 = os.path.join(path,newfile)
os.rename(newpath, newpath1)
newpath = newpath1
i += 1
else:
newpath = newpath
filelist.append(newpath)
files.append(file)
self.filelist=filelist
self.repeatfiles=repeatfiles
def movefile(self):#移动文件到目的文件夹
path_destination =self.path_destination
with open("C:\\Users\Administrator\Desktop\文件路径.txt", 'a') as f:
f.write("剪切文件路径在:" +self.path_destination + "\n")
for filename in self.filelist:
try:
shutil.move(filename, path_destination)
except:
pass
print("..文件汇总完成!!汇总路径在:",path_destination)
print("..重复文件:", self.repeatfiles)#输出重复文件
time.sleep(3)
path_source = input('..输入需要剪切文件的路径:')
path_disfile=input("..请输入剪切目的文件夹名称:不输入则在当前路径!!")
if len(path_disfile)!=0:
mysumfiles=SumFiles(path_source,path_disfile)
else:
mysumfiles=SumFiles(path_source)
mysumfiles.makedir()
mysumfiles.dealfile()
mysumfiles.movefile()
运行结果:
…输入需要剪切文件的路径:F:\12records\12.1.6\dy\all
…请输入剪切目的文件夹名称:不输入则在当前路径!!xy
…文件汇总完成!!汇总路径在: F:\12records\12.1.6\dy\all\xy
…重复文件: []
办公技巧分享2–有时候文件夹里面的文件太多了,就可以用这个方法批量修改符合条件的文件,快速的修改文件的名字,如果有重复的名字会显示出来,自己在改改就可以了。
代码分享:
import os
path=input("..输入路径并按回车结束:")
def getallfiles(path):
list = os.listdir(path)
for i in range(0,len(list)):
newpath=os.path.join(path,list[i])
if os.path.isfile(newpath):
rule=list[i].split('-')
houzui=list[i].split('.')
try:
if len(rule)>=5 and houzui[-1]=="wav":
rule1=rule[5].split('_')
newname=rule[3]+rule[4]+rule1[0]+"_"+rule1[1]+rule1[2]+rule1[3]+"_"+rule[1]+".wav"
newpath1=os.path.join(path,newname)
os.rename(newpath,newpath1)
elif houzui[-1]=='mp3':
if len(rule[0])>4 and len(rule)>3:
if rule[0][0] == "0":
rule[0] = rule[1][1:len(rule[1])]
newname=rule[2]+"_"+rule[3]+"_"+rule[0]+".mp3"
newpath1 = os.path.join(path, newname)
os.rename(newpath, newpath1)
if len(rule)>3:
if len(rule[1])>4 and len(rule)>3:
if rule[1][0]=="0":
rule[1]=rule[1][1:len(rule[1])]
newname=rule[2]+"_"+rule[3]+"_"+rule[1]+".mp3"
newpath1 = os.path.join(path, newname)
os.rename(newpath, newpath1)
except:
print("repeat files",list[i])
else:
getallfiles(newpath)
getallfiles(path)
print("..文件改名完成!!!")
办公技巧分享1–通过一些条件来查找文件,并复制到一个文件夹内。如果按照一个一个找,那很麻烦,通过这个脚本可以快速的查文件。简单方便实用,第一次运行会检查有相关需要的文件,如果没有,则会创建,让后把需要查找的条件输入进去,再次运行就可以将文件筛选出来。
代码分享:
import os,shutil
import time,sys
path_source=input('..输入需要查找文件路径:')
txtpath=os.path.join(path_source,"wj.txt")
path_dis=os.path.join(path_source,"sx")
if not os.path.exists(txtpath):
print("不存在该文件,正在创建该文件夹")
with open(txtpath,'w') as txt:
pass
if not os.path.isdir(path_dis):
os.mkdir(path_dis)
with open(txtpath) as txt:
lines=txt.readlines()
sin_files=[]
for line in lines:
if line not in sin_files:
sin_files.append(line)
print(len(sin_files))
for path,x,filename in os.walk(path_source):
try:
for line in sin_files:
# print(line.strip())
line=line.replace("-",'')
line=line.strip()
if line[0:1]=="0":
line=line[1:]
for file in filename:
newpath=path+'/'+file
if line in file and len(line)>=3:
print("正在复制文件->>"+file)
shutil.copy(newpath,path_dis)
except:
print(line)
print("查找复制结束")
time.sleep(2)
办公技巧分享1–快速匹配电话号码,复制内容,运行该程序,再次粘贴即是电话号码。
代码分享:
import pyperclip
import re
text=pyperclip.paste()
add_phone=re.findall(r'[\u4E00-\u9FA5]+\w?·?\d{0,3}\(?[\u4E00-\u9FA5]+\)?[\u4E00-\u9FA5]*',text,re.I)
phone=re.findall(r'(\d{3,4}-?\d{7,8})(,\d{3,4}?-?\d{7,8}?)*',text)#匹配电话号码
print(phone)
while True:
if '\r\n' in add_phone:
add_phone.remove('\r\n')
elif '电话号码是' in add_phone:
add_phone.remove('电话号码是')
else:
for i in add_phone:
i.strip()
break
# print(add_phone)
# print(phone)
for i in range(0,len(add_phone)):
print(add_phone[i],"N",phone[i])
运行如下:
[(‘010-62752114’, ‘’), (‘025-83593186’, ‘’), (‘027-87541114’, ‘’), (‘010-58800260’, ‘’), (‘010-62896811’, ‘’), (‘022-27403536’, ‘’), (‘0931-8911114’, ‘’), (‘0451-86414060’, ‘’)]
北京大学 N (‘010-62752114’, ‘’)
南京大学 N (‘025-83593186’, ‘’)
华中科技大学 N (‘027-87541114’, ‘’)
北京师范大学 N (‘010-58800260’, ‘’)
中国农业大学 N (‘010-62896811’, ‘’)
天津大学 N (‘022-27403536’, ‘’)
兰州大学 N (‘0931-8911114’, ‘’)
哈尔滨工业大学 N (‘0451-86414060’, ‘’)
北京大学 010-62752114
南京大学 025-83593186
华中科技大学 027-87541114
北京师范大学 010-58800260
中国农业大学 010-62896811
天津大学 022-27403536
兰州大学 0931-8911114
哈尔滨工业大学 0451-86414060