2014-03-06 138 views
1

我有我這樣的代碼,但問題是它只給出output.txt中的最後一個文件名,而不是所有30個文件名。列出所有文件目錄名稱到文本文件

import os 
path="path I wanted" 
dirList=os.listdir(path) 
for filename in dirList: 
    print (filename) 
    f = open("output1.txt", "w") 
    f.write(filename) 
    f.close() 
+1

提示:您正在覆蓋該文件。 _sssh_ – devnull

回答

0

'w'標誌爲'open'會在循環的每次迭代中截斷文件。如果文件已經存在,請改用'a'標誌。欲瞭解更多信息,請參閱here

+0

雖然這個_may_適用於這個例子,你是否建議OP應該在每次迭代時打開文件並創建一個新的文件對象?效率不高,也不漂亮。更不用說在每次迭代時需要將數據附加到文件的「seek」操作。 –

1

你是覆蓋在每個循環迭代中的文件。一切之前打開它:

import os 
path="path I wanted" 
dirList=os.listdir(path) 
with open("output1.txt", "w") as f: 
    for filename in dirList: 
     print (filename) 
     f.write(filename) 
1

試試這個,有一些額外的改進:

import os 

with open('myfile.txt', 'w') as file: 
    file.writelines([f for f in os.listdir(path)]) 

你過寫在每個迭代的文件。因此,我們在open之前將所有行寫入file

+1

+1當我有一個兒子時,我希望他喜歡編程! ;) –

+1

@PauloBu謝謝!只是想讓自己在那裏分享我的能力! –

+1

@PauloBu你的女兒也可能喜歡編程,如果你給他們一個機會! –

相關問題