2012-07-11 78 views
1

我在製作文件夾時遇到了麻煩,我想讓它們去。對於給定文件夾中的每個文件,我想創建一個新文件夾,然後將該文件放入新文件夾中。我的問題是,我創建的新文件夾被放在父目錄中,而不是我想要的。我的例子:如何爲目錄中的每個項目創建一個文件夾?

def createFolder(): 
    dir_name = 'C:\\Users\\Adrian\\Entertainment\\Coding\\Test Folder' 
    files = os.listdir(dir_name) 
    for i in files: 
     os.mkdir(i) 

假設我在那個目錄中的文件是Hello.txt和Goodbye.txt。當我運行腳本時,它會爲這些文件創建新的文件夾,但會將它們放在'C:\ Users \ Adrian \ Entertainment \ Coding'的上面一層。

如何使它們與文件,AKA'C:\ Users \ Adrian \ Entertainment \ Coding \ Test Folder'在同一位置創建?

+0

使用中甚至可用於Windows路徑正常斜槓(方法同Unix的靈魂做)。 Python很高興地接受它們。但絕對使用'os.path.join()'和相關的函數。 – pepr 2012-07-11 06:41:28

回答

2
import os, shutil 

for i in files: 
    os.mkdir(os.path.join(dir_name , i.split(".")[0])) 
    shutil.copy(os.path.join(dir_name , i), os.path.join(dir_name , i.split(".")[0])) 
2

os.listdir(dir_name)僅列出文件的名稱,而不是文件的完整路徑。要獲取該文件的路徑,與dir_name加入吧:

os.mkdir(os.path.join(dir_name, i)) 
+0

因此,我將os.mkdir行更改爲您所建議的內容,但是現在我收到一個錯誤消息,指出該文件已存在時無法創建文件。他們不盡相同,因爲一個文件夾和另一個文本文件,對吧?有任何想法嗎?謝謝。 – 2012-07-11 03:46:49

+0

@AdrianAndronic目錄名稱和文件名不能重疊。 (只需啓動Windows文件瀏覽器並嘗試創建一個與文件名稱相同的目錄,反之亦然...... Windows不應該讓你這樣做)。 – 2012-07-11 07:49:05

相關問題