|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
程序设计要求输入 D 空格 文件夹路径 ——打印所有该路径下的子目录
R 空格 文件夹路径——打印所有路径下的子目录,并打印所有子目录的子目录,直到最后的文件名
接下来输入 A证明以上所有文件均在考虑范围内
N 空格 文件名 则只选定这个文件进行操作
E 空格 文件扩展名 则选定所有这个扩展名的文件
T 空格 一个text 则选中所有包含这段text的文件
< 空格 一串数字 则选中所有字符数小于这段数字的文件
>空格 一串数字 则选中所有字符数大于这段数字的文件
然后打印出经过这些条件筛选后的文件路径
没有的话显示ERROR
然后对这个选中的文件进行操作
输入F,打印出文件的第一行文字
输入D,复制这个文件到初始目录 并加上.dup 例如选中了C:\pictures\boo.jpg,就复制出C:\pictures\boo.jpg.dup.
出入T,把文件修改时间修改为现在的电脑时间
如果有任何一步不能执行都要打印ERROR但是程序不会结束或者崩溃
例子:
R C:\Test\Project1\Example
C:\Test\Project1\Example\test1.txt
C:\Test\Project1\Example\test2.txt
C:\Test\Project1\Example\Sub\meee.txt
C:\Test\Project1\Example\Sub\test1.txt
C:\Test\Project1\Example\Sub\youu.txt
C:\Test\Project1\Example\Zzz\zzz.py
N
ERROR
N test1.txt
C:\Test\Project1\Example\test1.txt
C:\Test\Project1\Example\Sub\test1.txt
Q
ERROR
F
This is a line of text
Hello, my name is Boo
- import os
- import shutil
- import time
- class SearchFile():
- """
- D 空格 文件夹路径 ——打印所有该路径下的子目录
- R 空格 文件夹路径——打印所有路径下的子目录,并打印所有子目录的子目录,直到最后的文件名
- 接下来输入:
- A证明以上所有文件均在考虑范围内
- N 空格 文件名 则只选定这个文件进行操作
- E 空格 文件扩展名 则选定所有这个扩展名的文件
- T 空格 一个text 则选中所有包含这段text的文件
- < 空格 一串数字 则选中所有字符数小于这段数字的文件
- >空格 一串数字 则选中所有字符数大于这段数字的文件
- 然后打印出经过这些条件筛选后的文件路径
- 没有的话显示ERROR
- 然后对这个选中的文件进行操作
- 输入F,打印出文件的第一行文字
- 输入D,复制这个文件到初始目录 并加上.dup
- 出入T,把文件修改时间修改为现在的电脑时间
- 如果有任何一步不能执行都要打印ERROR但是程序不会结束或者崩溃
- """
- def __init__(self):
- print('---使用规则:---')
- print('D 空格 文件夹路径--->:查找子目录')
- print('R 空格 文件夹路径--->:遍历子目录及文件')
- print(' A --->:选取目录下的所有文件')
- print('N 空格 文件名 --->:选取所有指定文件')
- print('E 空格 文件扩展名--->:选取指定类型文件')
- print('T 空格 一个text --->:返回内容包含text的文件名')
- print('< 空格 一串数字 --->:返回所有字符数小于这段数字的文件')
- print('> 空格 一串数字 --->:返回所有字符数大于这段数字的文件')
- print(' F --->:第一行文字')
- print(' D --->:复制这个文件到初始目录 并加上.dup')
- print(' T --->:查询文件修改时间')
- print('输入!q退出!')
- print('--------------')
- def find_children(self, path):
- """
- 查找路径下的所有子目录
- :param path: 需要查找子目录的路径
- :return:
- """
- dir_list = []
- files = os.listdir(path)
- for file in files:
- filepath = os.path.join(path, file)
- if os.path.isdir(filepath):
- dir_list.append(filepath)
- return dir_list
- def find_all(self, path):
- """
- 遍历目录下的所有子目录及文件
- :param path: 需要遍历的路径
- :return:
- """
- file_list = []
- files = os.walk(path)
- for file in files:
- if file[1] == [] and file[2] == []:
- file_list.append(file[0])
- elif file[2] != []:
- for filename in file[2]:
- file_list.append(os.path.join(file[0],filename))
- return file_list
- def find_files(self, path):
- """
- 遍历路径下的所有文件,但不包括空目录
- :param path: 需要遍历的路径
- :return:
- """
- files = os.walk(path)
- files_list = []
- for file in files:
- if file[0] != []:
- for filename in file[2]:
- files_list.append(os.path.join(file[0],filename))
- return files_list
- def find_filename(self,path,filename):
- """
- 查找你指定目录下,文件名为filename的文件
- filename必须包含文件类型
- :param path:
- :param filename:必须包含类型
- :return:
- """
- file_list = []
- if os.path.isfile(path):
- files = [path]
- else:
- files = self.find_files(path)
- for file in files:
- if filename == os.path.basename(file):
- file_list.append(file)
- return file_list
- def find_filetype(self, path, types):
- """
- 查找目录下所有指定的文件类型
- :param path:
- :param types: 需要查找的类型。目前只支持单类型查找
- :return:
- """
- file_list = []
- if os.path.isfile(path):
- files = [path]
- else:
- files = self.find_files(path)
- for file in files:
- if types in os.path.splitext(file)[1]:
- file_list.append(file)
- return file_list
- def find_filetext(self,filelist,text):
- """
- 查询文件列表中的所有文件,如果文件中包含txt的内容,则返回文件名
- :param filelist:需要查找内容的文件列表
- :param text:
- :return:
- """
- file_list = []
- for file in filelist:
- with open(file,'r') as f:
- if text in f.read():
- file_list.append(file)
- return file_list
- def find_size(self,filelist,compares,num):
- """
- 根据输入的符号是<,>;以及num,返回指定的文件名
- :param filelist:
- :param compare:比较符
- :param num:字符数
- :return:
- """
- file_list =[]
- for file in filelist:
- size = os.stat(file).st_size
- if compares == '>'and size > num :
- file_list.append(file)
- elif compares == '<' and size > num:
- file_list.append(file)
- return file_list
- def first_line(self,filename):
- """
- 返回文件的非空第一行
- :param filename:
- :return:
- """
- with open(filename,'r') as f:
- if f.read().lstrip() == '':
- print('空文档')
- f.close()
- else:
- with open(filename,'r') as f:
- while True:
- str1 = f.readline()
- if str1.lstrip()== '':
- continue
- else:
- print(str1,end='')
- break
- def copy_file(self,filename):
- """
- 复制这个文件到初始目录 并加上.dup
- :param filename:
- :return:
- """
- shutil.copyfile(filename,filename+'.dup')
- def find_mtime(self,filename):
- """
- 查看修改文件的时间,这个时间是只读的。不知道怎么修改
- :param filename:
- :return:
- """
- info = os.stat(filename)
- t = time.localtime(info.st_mtime)
- return time.strftime("%Y-%m-%d %H:%M:%S",t)
- def main(self):
- """
- :return:
- """
- while True:
- str1 = input('请开始输入吧:')
- if str1 == '!q':
- break
- types = str1.split(' ')[0]
- if types == 'D':
- dir = str1.split(' ')[1]
- file_list = self.find_children(dir)
- print(file_list)
- elif types == 'R':
- dir = str1.split(' ')[1]
- file_list = self.find_all(dir)
- print(file_list)
- """
- 所有的方法我已经写了。剩下的按照你的想法往下泄了。
- """
- if __name__ == '__main__':
- try:
- SearchFile().main()
- except:
- print('ERROR')
复制代码
|
|