在python中获取文件名

时间:2012-11-27 20:06:07

标签: python python-2.7

我有以下代码来获取特定目录中的文件名列表

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视为变量而是模块名称。我怎么能克服这个

2 个答案:

答案 0 :(得分:2)

我对列表解析的意思有点困惑。这是一个列表,如果你想删除所有的文件扩展名,你可以使用列表推导来实现它,并将其拆分为fastreload建议。

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

如果您需要逐步查看每个文件,可以使用

执行此操作
for file in data_files:
    your code goes here

答案 1 :(得分: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。您的问题有点令人困惑,您对该元素了解多少,以及如何使用它?