我有一个模拟以下内容的文件结构:
我总是有一个文件夹,那个文件夹包含一个EXCEL文件夹和一堆文本文档。每个EXCEL文件夹都有一堆.xlsx文件。在
同样的想法可以在相同的结构下被无限次地复制。我试图进入每个目录的每个EXCEL文件夹,删除扩展名为.xlsx的所有文件,并继续此过程,直到访问完所有的EXCEL文件夹。在
以下是我失败的一点代码:
def clean_out_excel_test_data():
#For each folder in the test_log directory
#Open each folder
#for each_folder that contains the word EXCEL
#open each_folder
#for each file in each_folder, remove it
log_directory = "test_log_data/"
for each_folder in sorted(os.listdir(log_directory)):
print each_folder + ' is in the root'
for each_folder2 in sorted(os.listdir('%s/%s'%(log_directory,each_folder))) if os.path.isdir(each_folder2):
print '\t-' + each_folder2 + ' is a sub-folder'
for each_excel_file in sorted(os.listdir('%s/%s/%s'%(log_directory,each_folder, each_folder2))):
print '\t\t-' + each_excel_file + ' is a sub excel file'
我意识到我的代码是垃圾,但我想至少展示我的目标。在
让^{} 为您处理目录遍历:
您的语法错误来自于此:
您试图在for循环中使用if语句,但不能这样做。只需将
^{pr2}$if
移到另一个块中:这仍然是一个混乱的代码,这无疑是一个更好的方法,但这应该可以消除您当前的错误。在
不过,史蒂文·伦巴尔斯基的回答似乎更简洁一些:)
我会用^{} 。在
你可以这样做:
上面的操作将删除所有xlsx文件,而不管它们在哪个子目录中。应该很容易修改它来筛选目录名。在
如果您想使用
listdir()
,我建议递归遍历一个目录,将所有文件添加到队列中,然后迭代该目录并删除相应的文件。在相关问题 更多 >
编程相关推荐