使用此行读取文件目录后,
x = glob.glob('**/*.txt', recursive = True)
我得到了这个输出,
doping_center9_2.txt
doping_center9_3.txt
doping_center9_4.txt
doping_center9_5.txt
n_eff_doping_center1_1.txt
n_eff_doping_center1_2.txt
n_eff_doping_center1_3.txt
n_eff_doping_center1_4.txt
现在,我想创建另一个列表并使用n_eff
开头追加字符串。我试过这个:
n_eff = []
for i in range(len(x)):
if x[i] == x[i].startswith("n_eff"):
n_eff.append(x[i])
不幸的是,那里什么也没发生,甚至没有错误。
答案 0 :(得分:1)
问题是startswith
返回布尔值(True
或False
)。然后,您正在检查x[i]
是否等于布尔值,该值始终为false,因为它包含字符串。
改变条件应该有助于:
if x[i].startswith("n_eff"):
答案 1 :(得分:0)
如果输出是多行的,则需要将其与split('\n')
分开。
如果"<string>".startswith(<arg>)
以参数字符串<string>
开头,则函数<arg>
返回True。您可以使用此函数检查字符串是否以指定的子字符串开头。
使用列表理解可以写成:
new_list = [x for x in output if x.startswith('\n')]
编辑时考虑输出一个列表。
答案 2 :(得分:0)
In [51]: x = '''doping_center9_2.txt
...: doping_center9_3.txt
...: doping_center9_4.txt
...: doping_center9_5.txt
...: n_eff_doping_center1_1.txt
...: n_eff_doping_center1_2.txt
...: n_eff_doping_center1_3.txt
...: n_eff_doping_center1_4.txt
...: '''.splitlines()
In [52]: x
Out[52]:
['doping_center9_2.txt',
'doping_center9_3.txt',
... &#39; n_eff_doping_center1_4.txt&#39;]
你想做这样的事吗?
In [53]: for i in x:
...: if i.startswith('n_eff'):
...: print(i)
...:
n_eff_doping_center1_1.txt
n_eff_doping_center1_2.txt
n_eff_doping_center1_3.txt
n_eff_doping_center1_4.txt