尝试使用glob迭代python中文件夹中的文件

时间:2014-11-07 21:35:10

标签: python glob

我只是从列表中的最后一个文件中获取我想要的数据。我很欣赏这个程序工作得那么多,但我宁愿它能够处理文件夹中的所有文件。

   import os
   import glob
   os.chdir('C:\Users\U2970\Documents\Arcgis\Text_files\Data_exports')
   for file in list(glob.glob('*.txt')):
       reader = open(file)

   from EXPORT_COLUMN_SET import *

   try:
        data = column_set(reader)
        data.start_data_printer()
   finally:
        reader.close()

2 个答案:

答案 0 :(得分:3)

循环reader将包含最后打开的文件后,您将处理该单个文件。

修复缩进。

答案 1 :(得分:2)

for循环的范围定义了为每个文件执行的操作。 for循环后的所有内容只执行一次:

 import os                                                                   
 import glob                                                                 
 os.chdir('C:\Users\U2970\Documents\Arcgis\Text_files\Data_exports')         
 for file in list(glob.glob('*.txt')):                                       
     reader = open(file)               # <-- Things done for each file

 # Things done only once:                      
 from EXPORT_COLUMN_SET import *                                             

 try:                                                                        
      data = column_set(reader)                                              
      data.start_data_printer()                                              
 finally:                                                                    
      reader.close()   

您可以缩进其余代码以将其放入for循环中:

 import os                                                                   
 import glob                                                                 
 os.chdir('C:\Users\U2970\Documents\Arcgis\Text_files\Data_exports')       
 for file in list(glob.glob('*.txt')):                           
     reader = open(file)                  # ^                 
                                          # |                
     from EXPORT_COLUMN_SET import *      # |              
                                          # | Things now done for each file
     try:                                 # |                                 
          data = column_set(reader)       # |                              
          data.start_data_printer()       # |                              
     finally:                             # |                              
          reader.close()                  # v