python中tmp什么意思_在Python中搜索“/*tmp*.log”等文件的文件夹

下面的代码通过显示一个更复杂的搜索案例扩展了先前的答案。

我有一个受配置文件严格控制的应用程序。事实上,配置有很多版本,每个版本都有不同的折衷方案。因此,一个配置集将导致一个彻底的工作,但将非常缓慢,而另一个将更快,但不会那么彻底,等等,因此,图形用户界面将有一个配置组合框,其中的选项对应于不同的配置。因为我觉得配置集会随着时间的推移而增长,所以我不想在应用程序中硬编码文件列表和相应的选项(以及它们的顺序),而是采用一种文件命名约定来传递所有这些信息。

我使用的命名约定如下。文件位于目录$MY_APP_HOME/dat中。文件名以my_config_u开头,后跟组合索引号,然后是组合项的文本。例如:如果包含的目录(除其他外)文件my_config_11_fast_but_sloppy.txt、my_config_100_balanced.txt、my_config_3_through_but_slow.txt,则我的组合框将具有选项(按顺序):through but slow、fast but sloppy、balanced。

所以在运行时我需要在目录中查找我的配置文件

从要放入组合框的所有文件名中提取选项列表

根据索引对选项排序

能够从所选选项获取文件路径

下面的MyConfiguration类只需几行代码就可以完成所有工作(比我解释目的所花的时间少得多:-),它可以如下使用:# populate my_config combobox

self.my_config = MyConfiguration()

self.gui.my_config.addItems(self.my_config.get_items())

# get selected file path

index = self.gui.my_config.currentIndex()

self.config_file = self.my_config.get_file_path_by_index(index);

以下是MyConfiguration类:import os, re

class MyConfiguration:

def __init__(self):

# determine directory that contains configuration files

self.__config_dir = '';

env_name = 'MY_APP_HOME'

if env_name in os.environ:

self.__config_dir = os.environ[env_name] + '/dat/';

else:

raise Exception(env_name + ' environment variable is not set.')

# prepare regular expression

regex = re.compile("^(?Pmy_config_(?P\d+?)_(?P.*?)[.]txt?)$",re.MULTILINE)

# get the list of all files in the directory

file_names = os.listdir(self.__config_dir)

# find all files that are our parameters files and parse them into a list of tuples: (file name, index, item_text)

self.__items = regex.findall("\n".join(file_names))

# sort by index as an integer

self.__items.sort(key=lambda x: int(x[1]))

def get_items(self):

items = []

for item in self.__items:

items.append( self.__format_item_text(item[2]))

return items

def get_file_path_by_index(self, index):

return self.__config_dir + self.__items[index][0]

def __format_item_text(self, text):

return text.replace("_", " ").title();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值