簡單的版本:
目錄具有這樣的結構:
tmp
¦
file1.txt
file2.txt
代碼:
import os
dir_path = r'E:\download\tmp'
only_file=[dir_path+'\\'+name for name in os.listdir(dir_path) if os.path.isfile(dir_path+'\\'+name) ]
only_file
輸出:
[ 'E:\下載\ tmp目錄\ FILE1.TXT' ,'E:\ download \ tmp \ file2.txt']
完整版:
目錄具有這樣的結構:
tmp\2017\1\1\
- 20170101_1.txt'
- 20170101_2.txt'
tmp\2017\1\2\
- 20170102_1.txt'
- 20170102_2.txt'
方法一:
代碼:
import os
dir_path = r'E:\download\tmp'
file_list=[]
for dirPath, dirNames, fileNames in os.walk(dir_path):
for f in fileNames:
file_list.append(os.path.join(dirPath, f))
file_list
輸出:
['E:\\download\\tmp\\2017\\1\\1\\20170101_1.txt',
'E:\\download\\tmp\\2017\\1\\1\\20170101_2.txt',
'E:\\download\\tmp\\2017\\1\\2\\20170102_1.txt',
'E:\\download\\tmp\\2017\\1\\2\\20170102_2.txt']
方法2:
代碼:
import os
file_list=[]
dir_path = r'E:\download\tmp'
only_dir_year=[dir_path+'\\'+name for name in os.listdir(dir_path) if os.path.isdir(dir_path+'\\'+name) ]
for year_dir in only_dir_year:
only_dir_month=[year_dir+'\\'+name for name in os.listdir(year_dir) if os.path.isdir(year_dir+'\\'+name) ]
for month_dir in only_dir_month:
only_dir_day=[month_dir+'\\'+name for name in os.listdir(month_dir) if os.path.isdir(month_dir+'\\'+name) ]
for day_dir in only_dir_day:
tmp=[day_dir+'\\'+name for name in os.listdir(day_dir) if os.path.isfile(day_dir+'\\'+name) ]
file_list=file_list+tmp
file_list
輸出:
['E:\\download\\tmp\\2017\\1\\1\\20170101_1.txt',
'E:\\download\\tmp\\2017\\1\\1\\20170101_2.txt',
'E:\\download\\tmp\\2017\\1\\2\\20170102_1.txt',
'E:\\download\\tmp\\2017\\1\\2\\20170102_2.txt']
雖然我很欣賞的努力,恐怕方法1是我,這就是問題所在。它遍歷整個目錄,而不僅僅是新文件。 –