2013-10-19 132 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))) 

但這是那麼好玩了。