0

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

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

4

2 回答 2

2

我对列表解析的含义有些困惑。它是一个列表,如果您想删除所有文件扩展名,您可以使用列表理解来完成,并按照 fastreload 的建议进行拆分。

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

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

for file in data_files:
    your code goes here
于 2012-11-27T20:43:58.010 回答
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。您的问题有点令人困惑,您对元素了解多少,您想如何使用它?

于 2012-11-27T20:51:08.727 回答