2012-08-14 61 views
0
import os 
import glob 

for root, dirs, files in os.walk('F:\\workspace'): 
    for txtfile in glob.iglob(os.path.join(root,'*.txt')): 
     print txtfile 

我可以得到没有“[]”的文件,如果文件夹名称只有一个符号“[”或“]”,它可以工作。 我想我以错误的方式使用glob.iglob;但我不知道如何在没有它的情况下获取我需要的文件。 感谢您的回复。为什么这个Python脚本不能在文件的文件夹名称中获得“[]”的文件?

+1

文件“[]”不匹配的glob的“* .txt”,所以当然它不会被退回。 – geoffspear 2012-08-14 12:14:36

+0

你不需要glob。你已经在遍历根目录中的每个文件了。只需检查文件扩展名为.txt?然后将它们添加到列表中。然后做你想要的东西 – 2012-08-14 12:32:58

回答

0

glob的Python文档提到它在幕后使用fnmatch.fnmatch()

如果你只是要匹配文件名而不是文件夹名称,请尝试以下代码:

for root, dirs, files in os.walk('D:\\Scratch'): 
    for file in files: 
    if fnmatch.fnmatch(file, '*.txt'): 
     print os.path.join(root, file) 
+0

是的,代码可以得到我想要的,但是如果我想将这些文件复制到一个文件夹,该怎么办呢?fnmatch不能工作。你有什么想法吗? – fakelbst 2012-08-14 12:27:30

+0

fnmatch会告诉你文件名是否与“* .txt”匹配,然后在复制文件时可以使用“os.path.join(root,file)”。 – 2012-08-14 12:36:41

+0

非常感谢~~ !!!!我终于解决了这个问题。 – fakelbst 2012-08-14 12:44:55

相关问题