2012-11-27 29 views
0

文件名我有下面的代码,以获得在特定目录中的文件名列表获得在python

import sys,os 

data_files = [x[2] for x in os.walk(os.path.dirname(sys.argv[0]))] 
print data_files 

输出是一样的东西

[['bar.py', 'foo.py', 'foo.pyc', 'fooBar', 'fooBar.py', 'tar.py', 'tar.pyc']] 

我想分析这个名单和只传递一个特定的文件名到另一个函数

例如:我想解析上面的列表(是一个列表?),并只传递tar.py到另一个函数,即名称tar,所以作为另一个函数可以使用它像

import filename (in this case tar) 

我是新来的python,并尝试了很多列表解析的东西,但无法提取名称。任何帮助,将不胜感激

我使用Python 2.7

谢谢您的时间

编辑:

我想通了如何解析清单

data_files = [x[2] for x in os.walk(os.path.dirname(sys.argv[0]))] 
hello = data_files[0] 
print hello[0].split(".")[0] 

问题是当我尝试将文件名分配给像

var = hello[0].split(".")[0] 

,并使用import var

,但我不知道是否Python允许导入这样的模块,因为它不考虑var当成一个变量,但模块名称。我该如何克服这个问题

+0

你想如何解析? –

+0

我想获取文件名,例如:列表以[['bar.py']]出现,我希望文件名只是栏,所以导入语句如“import(filename)”起作用 – user1801279

+0

>“bar.py”.split(“。”)[0] >“bar” –

回答

0

如果你知道你的元素是其指数,你可以做file_list[index_of_your_element].split('.')[0],例如:

file_list = ['bar.py', 'foo.py', 'foo.pyc', 'fooBar', 'fooBar.py', 'tar.py', 'tar.pyc'] 
print l[5].split('.')[0] == 'tar' 

将打印true。你的问题有点混乱,你对这个元素有什么了解,以及你想如何使用它?

+0

嗨,谢谢你的回答,我用下面的代码解析列表 data_files = [x [2] for os in os.walk(os.path.dirname(sys.argv [0]))] hello = data_files [0] print hello [0] .split(“。”)[0] 所以我得到我想要的文件名,但问题是这个文件名被分配给一个变量,因此import var将不会查找变量,但var。因此我无法导入我想要的文件 – user1801279

+0

使用'__import __(module_name)' – 2012-11-29 10:34:22

2

我对你列表解析的含义有点困惑。它是一个列表,如果你想删除所有的文件扩展名,你可以使用列表理解和拆分作为fastreload建议。

new_list = [x.split('.')[0] for x in data_files] 

如果您需要逐步完成列表中查看每个文件,你可以做到这一点与

for file in data_files: 
    your code goes here 
+0

对不起,我编辑了你的文章,当我应该编辑我的。 – 2012-11-29 10:34:43

+0

@Mahi我做了回滚 – Kay

+0

@Kay好的,谢谢。 – 2012-11-29 10:54:05