【问题标题】:Python : How to read all files in the directory with some specific condition?Python:如何在某些特定条件下读取目录中的所有文件?
【发布时间】:2016-07-28 05:37:21
【问题描述】:

我想读取一个目录中的所有文件。目录包含以下文件:

ABC11_1.csv
ABC11_3.csv
ABC11_2.csv
ABC13_4.csv
ABC13_1.csv
ABC17_6.csv
ABC17_2.csv
ABC17_4.csv
ABC17_8.csv

当我运行我的脚本时,我想在控制台上以如下格式给出这个文件名: ABC11.

之后,我想按排序顺序读取所有只有 ABC11 扩展名的文件。即第一个 ABC11_1.csv,ABC11_2.csv,ABC11_3.csv 之类的。

如果用户只给出 ABC 应用程序必须给出错误信息。如果用户只给出 ABC1,那么它是有效的应用程序接受这个并在目录中检查扩展名为 ABC1 的文件,如果可用则按排序顺序处理文件,如果没有则错误消息。

程序代码-

from glob import glob
import os
import sys

file_pattern = ''
files_list = list()
arguments = {'ABC', 'PQR', 'XYZ'}

if len(sys.argv[1:2]) is 1:
   file_pattern = str(sys.argv[1:2])
else:   
   print 'run as <python test.py ABC>'
   sys.exit(1)
if file_pattern in arguments:
   print '<Provide LineName with some Number>'
   sys.exit(1)

file_pattern = file_pattern.replace('[','').replace(']','').replace('\'','')

if file_pattern.startswith('ABC',0,3):
   files_list = glob(os.path.join('<directory name>', str(file_pattern)+'_*.csv'))
else:
   print 'No Such File --> ' + str(file_pattern)+ '\t  <Provide appropriate Name>'
   sys.exit(1)

if files_list:
   for a_file in sorted(files_list):
      print a_file
     #process file
else:
   print 'No Such File --> ' + str(file_pattern)+ '\t  <Provide appropriate Name>'
   sys.exit(1)

我正在这样做,它对我来说很好,但这是做这些事情的其他最佳方法。请提供您的所有回复?

谢谢。

【问题讨论】:

    标签: python file directory glob


    【解决方案1】:

    根据您的问题,以下伪代码应该可以工作

    import os 
    
    # Read all files from a directory, and read your input argument
    files = os.listdir("your_input_directory_path")
    input_argument = "ABC11"
    
    # Sort file names by name
    files = sorted(files) 
    
    relevant_files = []
    for file_name in files:
        # Your Conditions goes here ........
    
        if file_name.startswith(input_argument):
            relevant_files.append(file_name)
    
    
    
    if relevant_files:
        return "Error | Not Found"
    else:
        return relevant_files
    

    【讨论】:

    • @userxxx- 它是否满足我在问题中提供的所有要求?
    • 是的,请尝试运行此代码。根据您的要求,可能会有一些细微的变化。但我想这将根据您在问题中提到的任何内容起作用
    • @userxxx- 如果用户给出 ABC1 参数,那么它应该只检查 ABC1_ (whaterver) 文件。它不应该返回 ABC11_1.csv 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2020-07-01
    • 2019-09-28
    相关资源
    最近更新 更多