-
20181205Python 自动化笔试题,挑战你的知识库
2020-07-24 10:55虽然好多写答案的了,还是把自己写的代码贴上来,毕竟写了很久。虽然判断重名的还没有实现
import os import hashlib class Test: #获取文件对应的md5 def get_md5(self,path,file_name): with open(os.path.join(path,file_name),'rb') as f: md5obj=hashlib.md5() md5obj.update(f.read()) hash=md5obj.hexdigest() return hash #获取文件大小的函数,默认获取到的单位是byte def get_size(self,file_path): fsize=os.path.getsize(file_path) fmz=fsize/1024 #转换为kb return round(fmz,2) #过滤重名文件并重命名 def rename(self,path): list = [] # 定义一个空列表用来存放文件名 i = 1 # 重名文件-文件名自增 for root, dirs, files in os.walk(path): for file in files: if file not in list: # 判断文件名是否已经在列表中,如果不在,则直接追加 list.append(file) else: # 如果在,则重命名后追加 new_name = "test000" + str(i) + ".py" # 新文件名命名组合 os.rename(file, new_name) list.append(new_name) i += 1 # print("每一次的list是{}".format(list)) return list # 返回重命名后的文件集合 # 获取目录下的所有文件,并调用get——md5函数 def allfile(self,basepath): # 判断是否有重名文件并重命名,调用rename函数 self.rename(basepath) list1=[] for root,dirs,files in os.walk(basepath): for file in files: #获取文件的大写 fsize=self.get_size(os.path.join(root,file)) if fsize>1: #如果文件大于1kb,则修改名称 md5_name = self.get_md5(root, file)+".py" #md5名字:root:文件对应目录;file:文件名 os.rename(file,md5_name) #将大于1kb的文件重命名 print("符合条件的所有文件是{},文件大小是{}kb".format(file,fsize)) else: # print("文件{}太小,大小是{}byte".format(file,fsize)) list1.append(file) print("小于1kb的文件集合是{}".format(list1)) if __name__ == '__main__': path=os.getcwd() Test().allfile(path)
1)一共4个方法:过滤重名文件并重命名,获取文件对应的MD5,获取文件大小,获取文件列表(判断大小&重命名)
2)主要用到了os库中的 os.path.getsize(), walk(), os.path.join(), os.rename() 函数。中间使用了for循环和if判断
3)关于获取文件md5的代码是直接在网上搜的,自己看不太明白。 -
20181210Python 自动化笔试题,挑战你的知识库
2020-07-24 10:55早上花了差不多一个小时,才搞出来,如果面试,啊,磨磨唧唧肯定写不出来。主要是算空格 * 和行的关系。代码中区分了n为奇数或偶数的情况。附上代码
-
20181210Python 自动化笔试题,挑战你的知识库
2020-07-24 10:55早上花了差不多一个小时,才搞出来,如果面试,啊,磨磨唧唧肯定写不出来。主要是算空格 * 和行的关系。代码中区分了n为奇数或偶数的情况。附上代码:
n=9时:
n=10的时候:
-
Python 里面的 os 两种获取路径的模式:getcwd 和 os.path.realpath () 的区别
2020-07-24 10:54getcwd()获取当前目录;其他文件调用时,会根据当前文件的位置获取目录,不同的文件调用,值是不一样的。
os.path.realpath()获取真实路径;其他文件调用时,仍是取这个路径,不会发生变化。