我正在尝试使用"目录路径"和" prefirx_pattern"来自配置文件。 我在vdir2和vprefix2变量中得到了正确的结果,但是list 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
由于 沙
答案 0 :(得分:2)
在此程序之外,无论您在何处设置环境变量,都会错误地设置它们。您的环境变量中包含引号字符。
设置环境变量以获取路径数据,但没有引号。
答案 1 :(得分:0)
分配enviornment变量,然后将您感兴趣的路径传递给函数。 从函数中访问全局状态会使跟踪和调试变得困难。
使用os.walk获取文件列表,它返回根目录的元组,dirs列表和文件列表。对我而言,它比使用os.isfile
过滤更干净。
使用列表推导来过滤os.walk返回的文件列表。
我假设print语句是用于调试的,所以将它们排除在外。
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