2013-08-22 125 views
0

我是一個初學編程的。打開文件在for循環的Python

在我的PY劇本,我需要創建一個CSV一個子目錄內從多個文件信息文件。當我運行我的代碼時,出現錯誤:FileNotFoundError: [Errno 2] No such file or directory: '1'。我打印目錄的內容,發現該目錄不讀取文件的實際名稱,但以數字或字符替換。

問題:這就是典型的目錄?因爲在研究中,好像其他人能夠使用

for file in directory: 
    open(file, "r") 

正確。我錯過了什麼嗎?

我的代碼:

sub_dir = datetime + "-dir" 
os.mkdir(sub_dir) 

with open("csv.txt", "a") as csv, open("data.txt") as data: 
    csv.write("Title" + "\r") 
    for x in data: 
     csv.write("," + x) 
    csv.write("\r" + "Data")     
    for file in sub_dir: 
     csv.write(file) 
     csv.write(", " + "Word1") 
     csv.write(", " + "Word2") 
     csv.write(", " + "Word3") 
     csv.write(", " + "Word4") 
     csv.write("\r") 
     f = open(file, "r") 
     lines = f.readlines() 
     for line in lines: 
      line.replace("word5=", ", ") 
      line.replace("word6=", ", ") 
      line.replace("word7=", ", ") 
      csv.write(line) 

問題:我怎樣才能改變我的代碼,以便file是實際的文件名?

+0

順便說一句,即使我們能夠找出問題所在,並解決它,我還是被你的意思混淆「這就是典型的字典?」我在你的問題的任何地方都沒有看到任何字典,我不知道「那」是指什麼。 – abarnert

+0

@abarnert哦,哇,對不起。這是一個漫長的一天,我絕對打算說目錄。你在答案中回答了'那個' - 我的大腦今天沒有工作。非常感謝! – hjames

+0

OK,我只是想確保我沒有錯過一半的問題什麼的。 – abarnert

回答

8

的問題是這一行:

for file in sub_dir: 

如果通過循環每次print(file),它應該是顯而易見的什麼是錯的:subdir是一個字符串,所以你只是遍歷該字符串的字符逐個。

什麼你可能想在這裏:

for file in os.listdir(sub_dir): 

作爲the docs解釋,listdir

Return a list containing the names of the entries in the directory given by path. The list is in arbitrary order. It does not include the special entries '.' and '..' even if they are present in the directory.

3

sub_dir不是目錄;這是一個目錄的名稱。

for file in sub_dir: 

迭代中名中的字符。