2014-02-07 71 views
-1

以下是我的文件列表。每個文件都以可寫模式打開並用文本壓縮。 我的目標是將每個文本轉移到它壓縮的文件中。如何將文本粘貼到python文件列表中

file_list=[(<open file 'x', mode 'w' at 0x028F5758>, 'hi friend'), (<open file 'x', mode 'w' at 0x02943020>, 'whats your name?'), (<open file 'x', mode 'w' at 0x02943078>, 'you welcome')] 

我嘗試:

paste_texts=[x[0].write(x[1]) for x in file_list] 
print [open('x', 'r').read() for x in paste_texts] 

輸出:

['', '', ''] 

我檢查我的C盤上的文件,他們是空的,不變。有關如何將每個文本轉移到其相鄰文件的任何建議?

+0

也就是說第一行是不是有效的Python。 –

+0

您可能需要'.close()'或'.flush()'文件對象才能將更改提交到磁盤。 – senshin

+0

嗨Senshin,我試圖在發佈之前關閉,但我得到這個錯誤消息:AttributeError:'NoneType'對象沒有屬性'關閉' – Tiger1

回答

1

對此使用列表理解沒有意義。

使用一個簡單的循環for

file_names = 'hi_file.txt', 'name_file.txt', 'welcome_file.txt' 
my_strings = 'hi friend', 'whats your name', 'you welcome' 

for (text, fname) in zip(my_strings, file_names): 
    with open(fname, 'w') as f: 
     f.write(text) 

編輯(見註釋):

for (text, f) in zip(my_strings, file_list): 
    f.write(text) 
+0

嗨wim,這個數據集非常龐大,它已經以這種方式呈現給我(文件壓縮文件)。我認爲列表理解是最好的方法。 – Tiger1

+0

那麼究竟是什麼輸入格式,因爲你的例子不是有效的Python代碼。如果它是一個用字符串壓縮的文件句柄列表,那麼只需遍歷列表並進行寫操作,循環將與我的答案一樣。 – wim

+0

這些文件已經打開,我剛剛擺出他們這就是爲什麼列表看起來像它不是一個有效的代碼:[<打開文件'x',模式'w'在0x02B730D0>,<打開文件'x',模式'w' 0x02B73128>,<打開文件'x',模式'w'在0x02B73180>] – Tiger1

相關問題