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

7 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()
Run Code Online (Sandbox Code Playgroud)

tha*_*guy 9

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()   
Run Code Online (Sandbox Code Playgroud)

您可以缩进其余代码以将其放入 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
Run Code Online (Sandbox Code Playgroud)