2013-10-19 79 views
0

我有这样的名单:转换列表以字符串的前缀和后缀

myist = ['0', '1', '2', '3'] 

,我想通过在多个文件中的一个行中使用使用os.system()来执行的东西:

cat file0.txt file1.txt file2.txt file3.txt > result.txt 

但我不知道如何在加入列表时添加后缀。这:

os.system("cat file" + ' file'.join(mylist) +".txt > result.txt") 

会给我:

cat file0 file1 file2 file3.txt > result.txt 

但我想是这样的:

cat file0.txt file1.txt file2.txt file3.txt > result.txt 

那么我在寻找的东西像'prefix'.join(mylist).'suffix'。 如何在不使用for循环的情况下做到这一点?

+3

使用列表理解 –

+0

我不想使用循环 – Johnny

回答

1

您可以在后缀只是添加到字符串的开头:

os.system("cat file" + '.txt file'.join(mylist) +".txt > result.txt") 

或者你可以使用字符串与地图功能格式化:

os.system("cat " + ' '.join(map('file{0}.txt'.format, mylist)) + " > result.txt") 
+0

这做到了...谢谢没有想过 – Johnny

0

使用生成器表达式:

print "cat " + " ".join("file%d.txt" % int(d) for d in mylist) + " > result.txt" 
+0

这不是一个列表理解 –

+0

+1,但我认为它在技术上发电机表达 – grc

+0

权,确切地说... –

0

万一你们每个人想用4件以上的东西

os.system('cat %s > result.txt'%(' '.join("file%i.txt"%i for i in xrange(0,4)))) 

你也可以这样做:

mylist = ['0','1','2','3'] 
os.system('cat %s > result.txt'%(' '.join("file%s.txt"%i for i in mylist))) 

但这是那么好玩了。