2017-02-21 78 views
-1

我會嘗試爲問題提供示例。如何創建多個文件以使用Python即時編寫多個列表?

假設我們有3個列表。例如: -

list1 =['one','two','three'] 
list2=['a','b','c'] 
list3=['mike','jack','ram'] 

或者說,文件中每行都有列表值。

['one','two','three'] 
['a','b','c'] 
['mike','jack','ram'] 

現在我想通過創建三個不同的文件來寫這三個列表。文件的名稱應自動生成,例如: -

file001.txt 
file002.txt 
file003.txt 
+3

爲什麼同時重要;只需打開併爲每個列表寫入一個文件。不知何故,你的真實數據流(當時不會是一個列表)?它非常大嗎? –

+0

我猜你的列表值是在一個文件內?類似['one','two','three']和下一行['a','b','c']? – everestial007

+0

@NickT是的。我有超過50個文件被解析爲50個列表。現在我必須自動將它們寫入50個文件。 –

回答

1

我假設您的數據在控制檯中,每個列表都是一行。

像這樣:

line1 =['one','two','three'] 
line2=['a','b','c'] 
line3=['mike','jack','ram'] 

我合併所有的數據到列表

all_data = [line1] + [line2] + [line3] 

這上面部分的一個列表是沒有必要的,如果所有的列表值是線在一個變量行。如果沒有,你可以使用某種方法合併它們。

現在,寫每一行(列表值),以不同的文件:

count = 1 

for data in all_data: 
    output = open('file' + str(count) + '.txt', 'w') 
    output.write(','.join(data)) 
    count += 1 
    output.close() 

繼續這樣跌下去,直到列表的最後一個值。所以,根據有多少個列表。如果您想加入列表中的值,可以用單引號('')中的某些內容更改''.join

希望我幫了忙。

+0

這個答案接近我的解決方案。 –

+0

接受答案,如果它有幫助。 – everestial007

0

您可以看到詳細的解釋here。但總而言之,你通過打開文件(或創建一個文件,如果它不存在),然後寫/讀/等等,定義類型文件的對象...

+0

這與同時性有什麼關係? –

0

使用enumeratestring formatting來構造文件名。

s = 'file{:03}.txt' 
for n, lyst in enumerate((list1, list2, list3), 1): 
    fname = s.format(n) 
    with open(fname, 'w') as f: 
     #f.write(','.join(lyst)) 
     f.write('\n'.join(lyst)) 

如果任何物品都沒有串改

 f.write('\n'.join(map(str, lyst))) 

如果名單是如此之久,創建一個字符串寫入文件是禁止的,將改爲改爲

 for thing in lyst: 
      f.write('{}\n'.format(thing)) 
+0

我認爲OP想要生成儘可能多的文件。我認爲更好的方法是即時讀取和寫入每一行。 – everestial007

+0

@ everestial007 - 當你認爲某種方法更好*時,你應該說爲什麼它更好。 – wwii

+0

我只是想指出,如果每條線(即時)讀取和寫入數據,無論有多少行(50或數百萬)都無關緊要。 – everestial007

相關問題