本文实例讲述了python实现搜索本地文件信息写入文件的方法。分享给大家供大家参考,具体如下:
主要功能:
在指定的盘符,如D盘,搜索出与用户给定后缀名(如:jpg,png)相关的文件,然后把搜索出来的信息(相关文件的绝对路径),存放到用户指定的文件(如果文件不存在,则建立相应的文件)中
先卡看运行效果吧:
运行效果的前部分:
运行效果的后部分:
写入信息后的文件:
代码部分:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
#在指定的盘符,如D盘,搜索出与用户给定后缀名(如:jpg,png)相关的文件
#然后把搜索出来的信息(相关文件的绝对路径),存放到用户指定的
#文件(如果文件不存在,则建立相应的文件)中
import os
import time
#指定盘符
DESK = 'E:\\'
#信息保存文件的路径
########## 这里请先建立好此文件,我在做文件操作的过程中
########## 使用os.mknod('E:\\info.txt'),系统不会建立文件的
SAVE_FILE = 'E:\\info.txt'
#文件后缀类型
FILE_EXT = [ 'bmp' , 'jpeg' , 'gif' , 'psd' , 'png' , 'jpg' ]
#定义全局变量
my_dirs = []
my_files = []
#文件个数
FILES_NUMBER = 0
#符合要求的文件个数
RIGHT_FILES_NUMBER = 0
#不符合要求的文件个数
NOT_RIGHT_FILES_NUMBER = 0
#文件夹个数
DIR_NUMBER = 0
#获取指定文件夹下面的所有文件及文件夹
#如果指定的文件夹不存在,则返回相应的提示信息
def listdir(dir_path):
if os.path.exists(dir_path):
return os.listdir(dir_path)
else :
return '目录' + dir_path + '不存在'
#搜索文件主函数
def search_files(path,name):
if not os.path.isdir(path) and not os.path.isfile(path):
return False
path = os.path.join(path,name)
if os.path.isfile(path): #是文件
global FILES_NUMBER
FILES_NUMBER = FILES_NUMBER + 1
lists = path.split( '.' )
#print('============================================',lists)
file_ext = lists[ - 1 ] #文件扩展名
if file_ext in FILE_EXT:
global RIGHT_FILES_NUMBER
RIGHT_FILES_NUMBER = RIGHT_FILES_NUMBER + 1
global my_files
now = str (time.strftime( '%Y-%m-%d %H:%M:%S' ,time.localtime(time.time())))
size = str (get_file_size(path))
my_files.append(now + ' ' + path + ' ' + size + '\n' )
print ( '文件:' ,path)
else :
global NOT_RIGHT_FILES_NUMBER
NOT_RIGHT_FILES_NUMBER = NOT_RIGHT_FILES_NUMBER + 1
elif os.path.isdir(path): #是文件夹
global DIR_NUMBER
DIR_NUMBER = DIR_NUMBER + 1
for name in listdir(path):
#print(os.path.join(path,name))
search_files(path,name)
#获取文件大小
def get_file_size(path):
if os.path.exists(path):
return os.path.getsize(path)
#写入信息
def write_info(content):
if os.path.exists(path):
with open (SAVE_FILE, 'w+' ) as fp:
fp.write(content)
fp.flush()
fp.close()
else :
print ( '文件:{}不存在!' . format (SAVE_FILE))
#读取所有信息
def read_info():
if os.path.exists(path):
with open (SAVE_FILE, 'r+' ) as fp:
for line in fp:
print (line)
else :
print ( '文件:{}不存在!' . format (SAVE_FILE))
if __name__ = = '__main__' :
for d in listdir(DESK):
my_dirs.append(os.path.join(DESK,d))
print (my_dirs)
#这里是做测试用的,由于扫描整个盘符涉及到的文件和文件夹很多,可能要花一定的时间
#所以这里可以使用一个文件夹作为测试
my_dir = [ 'E:\\test' ]
for path in my_dir:
search_files(path,'')
print ( '#' * 50 )
print (my_files)
print ( '#' * 50 )
print ( '开始写入信息...' )
content = ''.join(my_files)
write_info(content)
print ( '#' * 50 )
print ( '开始读取信息...' )
read_info()
print ( '#' * 50 )
print ( '搜索文件夹总数:{0},文件总数:{1}' . format (DIR_NUMBER,FILES_NUMBER))
print ( '符合要求的文件总数:{0},不符合要求的文件总数:{1}' . format (RIGHT_FILES_NUMBER,NOT_RIGHT_FILES_NUMBER))
|
运行控制台情况;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
Python 3.3 . 2 (v3. 3.2 :d047928ae3f6, May 16 2013 , 00 : 03 : 43 ) [MSC v. 1600 32 bit (Intel)] on win32
Type "copyright" , "credits" or "license()" for more information.
>>> = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = RESTART = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
>>>
[ 'E:\\bb' , 'E:\\devlopment' , 'E:\\game' , 'E:\\hongten_download' , 'E:\\info.txt' , 'E:\\log4j' , 'E:\\mydir' , 'E:\\oracle' , 'E:\\oracle10.2_win32' , 'E:\\RECYCLER' , 'E:\\svn_checkout' , 'E:\\System Volume Information' , 'E:\\test' , 'E:\\The KMPlayer' , 'E:\\windows' , 'E:\\work' ]
文件: E:\test\ 20130627_140132Hongten .jpg
文件: E:\test\ 20130627_182913 ( 1 )Hongten.jpg
文件: E:\test\ 20130627_183008 ( 1 )Hongten.jpg
文件: E:\test\ 20130627_183054Hongten .jpg
文件: E:\test\ 20130627_183059Hongten .jpg
文件: E:\test\ 20130627_183101Hongten .jpg
文件: E:\test\ 20130627_183116Hongten .jpg
文件: E:\test\ 20130627_183326Hongten .jpg
文件: E:\test\ 20130627_183714Hongten .jpg
文件: E:\test\ 20130627_183749Hongten .jpg
文件: E:\test\ 20130627_183925Hongten .jpg
文件: E:\test\ 20130627_203658Hongten .jpg
文件: E:\test\ 20130627_203802Hongten .jpg
文件: E:\test\ 20130627_205112 ( 1 )Hongten.jpg
文件: E:\test\ 20130627_205131Hongten .jpg
文件: E:\test\ 20130627_205159Hongten .jpg
文件: E:\test\ 20130627_205219 ( 1 )Hongten.jpg
文件: E:\test\ 20130627_205257Hongten .jpg
文件: E:\test\ 20130627_205315Hongten .jpg
文件: E:\test\ 20130627_205408 ( 1 )Hongten.jpg
文件: E:\test\ 20130627_205425Hongten .jpg
文件: E:\test\ 20130627_205627Hongten .jpg
文件: E:\test\ 20130627_205629Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_140132Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_182913 ( 1 )Hongten.jpg
文件: E:\test\hongten\ 6.27 \ 20130627_183008 ( 1 )Hongten.jpg
文件: E:\test\hongten\ 6.27 \ 20130627_183054Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_183059Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_183101Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_183116Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_183326Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_183714Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_183749Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_183925Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_203658Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_203802Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_205112 ( 1 )Hongten.jpg
文件: E:\test\hongten\ 6.27 \ 20130627_205131Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_205159Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_205219 ( 1 )Hongten.jpg
文件: E:\test\hongten\ 6.27 \ 20130627_205257Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_205315Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_205408 ( 1 )Hongten.jpg
文件: E:\test\hongten\ 6.27 \ 20130627_205425Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_205627Hongten .jpg
文件: E:\test\hongten\ 6.27 \ 20130627_205629Hongten .jpg
##################################################
[ '2013-07-28 17:14:49 E:\\test\\20130627_140132Hongten.jpg 0\n' , '2013-07-28 17:14:49 E:\\test\\20130627_182913(1)Hongten.jpg 2380747\n' , '2013-07-28 17:14:49 E:\\test\\20130627_183008(1)Hongten.jpg 2315326\n' , '2013-07-28 17:14:49 E:\\test\\20130627_183054Hongten.jpg 2672977\n' , '2013-07-28 17:14:49 E:\\test\\20130627_183059Hongten.jpg 2006608\n' , '2013-07-28 17:14:49 E:\\test\\20130627_183101Hongten.jpg 2076974\n' , '2013-07-28 17:14:49 E:\\test\\20130627_183116Hongten.jpg 2687018\n' , '2013-07-28 17:14:49 E:\\test\\20130627_183326Hongten.jpg 1993448\n' , '2013-07-28 17:14:49 E:\\test\\20130627_183714Hongten.jpg 2497973\n' , '2013-07-28 17:14:49 E:\\test\\20130627_183749Hongten.jpg 2066327\n' , '2013-07-28 17:14:49 E:\\test\\20130627_183925Hongten.jpg 2037776\n' , '2013-07-28 17:14:49 E:\\test\\20130627_203658Hongten.jpg 3033996\n' , '2013-07-28 17:14:49 E:\\test\\20130627_203802Hongten.jpg 2837396\n' , '2013-07-28 17:14:49 E:\\test\\20130627_205112(1)Hongten.jpg 2987659\n' , '2013-07-28 17:14:49 E:\\test\\20130627_205131Hongten.jpg 2745724\n' , '2013-07-28 17:14:49 E:\\test\\20130627_205159Hongten.jpg 2824810\n' , '2013-07-28 17:14:49 E:\\test\\20130627_205219(1)Hongten.jpg 2864744\n' , '2013-07-28 17:14:49 E:\\test\\20130627_205257Hongten.jpg 3092656\n' , '2013-07-28 17:14:49 E:\\test\\20130627_205315Hongten.jpg 2832393\n' , '2013-07-28 17:14:49 E:\\test\\20130627_205408(1)Hongten.jpg 2796261\n' , '2013-07-28 17:14:49 E:\\test\\20130627_205425Hongten.jpg 3295286\n' , '2013-07-28 17:14:49 E:\\test\\20130627_205627Hongten.jpg 2819717\n' , '2013-07-28 17:14:49 E:\\test\\20130627_205629Hongten.jpg 2813522\n' , '2013-07-28 17:14:49 E:\\test\\hongten\\6.27\\20130627_140132Hongten.jpg 2571032\n' , '2013-07-28 17:14:49 E:\\test\\hongten\\6.27\\20130627_182913(1)Hongten.jpg 2380747\n' , '2013-07-28 17:14:49 E:\\test\\hongten\\6.27\\20130627_183008(1)Hongten.jpg 2315326\n' , '2013-07-28 17:14:49 E:\\test\\hongten\\6.27\\20130627_183054Hongten.jpg 2672977\n' , '2013-07-28 17:14:49 E:\\test\\hongten\\6.27\\20130627_183059Hongten.jpg 2006608\n' , '2013-07-28 17:14:49 E:\\test\\hongten\\6.27\\20130627_183101Hongten.jpg 2076974\n' , '2013-07-28 17:14:49 E:\\test\\hongten\\6.27\\20130627_183116Hongten.jpg 2687018\n' , '2013-07-28 17:14:49 E:\\test\\hongten\\6.27\\20130627_183326Hongten.jpg 1993448\n' , '2013-07-28 17:14:49 E:\\test\\hongten\\6.27\\20130627_183714Hongten.jpg 2497973\n' , '2013-07-28 17:14:49 E:\\test\\hongten\\6.27\\20130627_183749Hongten.jpg 2066327\n' , '2013-07-28 17:14:50 E:\\test\\hongten\\6.27\\20130627_183925Hongten.jpg 2037776\n' , '2013-07-28 17:14:50 E:\\test\\hongten\\6.27\\20130627_203658Hongten.jpg 3033996\n' , '2013-07-28 17:14:50 E:\\test\\hongten\\6.27\\20130627_203802Hongten.jpg 2837396\n' , '2013-07-28 17:14:50 E:\\test\\hongten\\6.27\\20130627_205112(1)Hongten.jpg 2987659\n' , '2013-07-28 17:14:50 E:\\test\\hongten\\6.27\\20130627_205131Hongten.jpg 2745724\n' , '2013-07-28 17:14:50 E:\\test\\hongten\\6.27\\20130627_205159Hongten.jpg 2824810\n' , '2013-07-28 17:14:50 E:\\test\\hongten\\6.27\\20130627_205219(1)Hongten.jpg 2864744\n' , '2013-07-28 17:14:50 E:\\test\\hongten\\6.27\\20130627_205257Hongten.jpg 3092656\n' , '2013-07-28 17:14:50 E:\\test\\hongten\\6.27\\20130627_205315Hongten.jpg 2832393\n' , '2013-07-28 17:14:50 E:\\test\\hongten\\6.27\\20130627_205408(1)Hongten.jpg 2796261\n' , '2013-07-28 17:14:50 E:\\test\\hongten\\6.27\\20130627_205425Hongten.jpg 3295286\n' , '2013-07-28 17:14:50 E:\\test\\hongten\\6.27\\20130627_205627Hongten.jpg 2819717\n' , '2013-07-28 17:14:50 E:\\test\\hongten\\6.27\\20130627_205629Hongten.jpg 2813522\n' ]
##################################################
开始写入信息...
##################################################
开始读取信息...
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_140132Hongten .jpg 0
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_182913 ( 1 )Hongten.jpg 2380747
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_183008 ( 1 )Hongten.jpg 2315326
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_183054Hongten .jpg 2672977
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_183059Hongten .jpg 2006608
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_183101Hongten .jpg 2076974
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_183116Hongten .jpg 2687018
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_183326Hongten .jpg 1993448
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_183714Hongten .jpg 2497973
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_183749Hongten .jpg 2066327
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_183925Hongten .jpg 2037776
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_203658Hongten .jpg 3033996
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_203802Hongten .jpg 2837396
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_205112 ( 1 )Hongten.jpg 2987659
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_205131Hongten .jpg 2745724
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_205159Hongten .jpg 2824810
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_205219 ( 1 )Hongten.jpg 2864744
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_205257Hongten .jpg 3092656
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_205315Hongten .jpg 2832393
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_205408 ( 1 )Hongten.jpg 2796261
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_205425Hongten .jpg 3295286
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_205627Hongten .jpg 2819717
2013 - 07 - 28 17 : 14 : 49 E:\test\ 20130627_205629Hongten .jpg 2813522
2013 - 07 - 28 17 : 14 : 49 E:\test\hongten\ 6.27 \ 20130627_140132Hongten .jpg 2571032
2013 - 07 - 28 17 : 14 : 49 E:\test\hongten\ 6.27 \ 20130627_182913 ( 1 )Hongten.jpg 2380747
2013 - 07 - 28 17 : 14 : 49 E:\test\hongten\ 6.27 \ 20130627_183008 ( 1 )Hongten.jpg 2315326
2013 - 07 - 28 17 : 14 : 49 E:\test\hongten\ 6.27 \ 20130627_183054Hongten .jpg 2672977
2013 - 07 - 28 17 : 14 : 49 E:\test\hongten\ 6.27 \ 20130627_183059Hongten .jpg 2006608
2013 - 07 - 28 17 : 14 : 49 E:\test\hongten\ 6.27 \ 20130627_183101Hongten .jpg 2076974
2013 - 07 - 28 17 : 14 : 49 E:\test\hongten\ 6.27 \ 20130627_183116Hongten .jpg 2687018
2013 - 07 - 28 17 : 14 : 49 E:\test\hongten\ 6.27 \ 20130627_183326Hongten .jpg 1993448
2013 - 07 - 28 17 : 14 : 49 E:\test\hongten\ 6.27 \ 20130627_183714Hongten .jpg 2497973
2013 - 07 - 28 17 : 14 : 49 E:\test\hongten\ 6.27 \ 20130627_183749Hongten .jpg 2066327
2013 - 07 - 28 17 : 14 : 50 E:\test\hongten\ 6.27 \ 20130627_183925Hongten .jpg 2037776
2013 - 07 - 28 17 : 14 : 50 E:\test\hongten\ 6.27 \ 20130627_203658Hongten .jpg 3033996
2013 - 07 - 28 17 : 14 : 50 E:\test\hongten\ 6.27 \ 20130627_203802Hongten .jpg 2837396
2013 - 07 - 28 17 : 14 : 50 E:\test\hongten\ 6.27 \ 20130627_205112 ( 1 )Hongten.jpg 2987659
2013 - 07 - 28 17 : 14 : 50 E:\test\hongten\ 6.27 \ 20130627_205131Hongten .jpg 2745724
2013 - 07 - 28 17 : 14 : 50 E:\test\hongten\ 6.27 \ 20130627_205159Hongten .jpg 2824810
2013 - 07 - 28 17 : 14 : 50 E:\test\hongten\ 6.27 \ 20130627_205219 ( 1 )Hongten.jpg 2864744
2013 - 07 - 28 17 : 14 : 50 E:\test\hongten\ 6.27 \ 20130627_205257Hongten .jpg 3092656
2013 - 07 - 28 17 : 14 : 50 E:\test\hongten\ 6.27 \ 20130627_205315Hongten .jpg 2832393
2013 - 07 - 28 17 : 14 : 50 E:\test\hongten\ 6.27 \ 20130627_205408 ( 1 )Hongten.jpg 2796261
2013 - 07 - 28 17 : 14 : 50 E:\test\hongten\ 6.27 \ 20130627_205425Hongten .jpg 3295286
2013 - 07 - 28 17 : 14 : 50 E:\test\hongten\ 6.27 \ 20130627_205627Hongten .jpg 2819717
2013 - 07 - 28 17 : 14 : 50 E:\test\hongten\ 6.27 \ 20130627_205629Hongten .jpg 2813522
##################################################
搜索文件夹总数: 4 ,文件总数: 50
符合要求的文件总数: 46 ,不符合要求的文件总数: 4
>>>
|
希望本文所述对大家Python程序设计有所帮助。