名单即将在Python为空白(list is coming as blank in python)

2019-10-20 19:32发布

我试图使用从配置文件“目录路径”和“prefirx_pattern”。 我得到vdir2和vprefix2可变正确的结果,但名单local_file_list仍然是空的。

result
  vdir2 is"/home/ab_meta/abfiles/"
  vprefix2 is "rp_pck."
  []

def get_files(self):
     try:
        print "vdir2 is" + os.environ['dir_path']
        print "vprefix2 is "+ os.environ['prefix_pattern']
        local_file_list = filter(os.path.isfile, glob.glob(os.environ['dir_path'] + os.environ['prefix_pattern'] +  "*"))
        print local_file_list
        local_file_list.sort(key=lambda s: os.path.getmtime(os.path.join(os.environ['dir_path'], s)))
     except Exception, e:
         print e
         self.m_logger.error("Exception: Process threw an exception " + str(e))
         log.sendlog("error",50)
         sys.exit(1)
     return local_file_list

我曾尝试另一种方式下面给出却又名单即将为空。

第二个选项:

def get_config(self):
    try:
        v_dir_path = os.environ['dir_path']
        v_mail_prefix = os.environ['mail_prefix']
        self.m_dir_path = v_dir_path
        self.m_prefix_pattern = v_prefix_pattern
        self.m_mail_prefix = v_mail_prefix

     except KeyError, key:
           self.m_logger.error("ERROR: Unable to retrieve the key " + str(key))
     except Exception, e:
         print e
         self.m_logger.error("Error: job_prefix Unable to get variables " + str(e))
         sys.exit(1)

def get_files(self):
     try:
        local_file_list = filter(os.path.isfile, glob.glob(self.m_dir_path + self.m_prefix_pattern +  "*"))
        local_file_list.sort(key=lambda s: os.path.getmtime(os.path.join(os.environ['dir_path'], s)))
     except Exception, e:
         print e

由于桑迪

Answer 1:

这个计划之外,无论你设置环境变量,你错误地设置了它们。 你的环境变量中都有引号字符。

设置环境varaibles有路径数据,但不包括引号。



Answer 2:

分配enviornment变量,然后通过你有兴趣到函数的路径。 从你的函数中访问全局状态可以使它很难跟踪和调试。

使用os.walk获得的文件列表,它返回的根目录的元组,显示目录列表和文件列表。 对我来说,它的清洁比使用os.isfile进行过滤。 使用列表理解,以滤除os.walk返回的文件列表。

我假设的打印语句是调试等都留下了他们。

vdir2 = os.environ['dir_path']
vprefix2 = os.environ['prefix_pattern']

def get_files(vpath):
    for root, dirs, files in os.walk(vpath):
        local_file_list = [f for f in files if f.startswith(vprefix2)]
        local_file_list.sort(key=lambda x: os.path.getmtime(x))
        return local_file_list     


文章来源: list is coming as blank in python