2016-07-06 75 views
1

我想要一個python腳本來讀取其中包含名稱列表的文本文件,並基於這些名稱創建文件夾。例如,如果文本文件中包含「john_doe」和「jane_doe」,則該腳本應創建兩個文件夾。一個叫做「john_doe」,另一個叫做「jane_doe」。基於python中的文本文件中的名稱創建文件夾

當我運行我的腳本時,出現WindowsError錯誤:[錯誤123]文件名,目錄名或colume標籤語法不正確:「,open file'names.txt',mode'r'at 0X00000000025E6300> 「

下面是我運行腳本:

import os 

with open('names.txt') as x: 
    for line in x: 
     line = line.strip() 
     os.mkdir(str(x)) 

我認爲,這更是一個windows問題(因此WindowsError),但我不知道怎麼去解決它。有小費嗎?

+0

開放('名稱的改變這一點。 txt')as x:line與open('names.txt','r')一樣x: – AK1

+0

感謝您的提示。首先,我應該做到這一點。不幸的是,我仍然得到同樣的錯誤。 – DarkKnight4251

+0

os.mkdir(行),而不是os.mkdir(x),因爲x是文件描述符,而不是行 –

回答

2

相反的:

 os.mkdir(str(x)) 

您的意思是:

 os.mkdir(str(line)) 

你甚至都不需要str(),因爲line已經是一個str。 (我懷疑你只是添加它,因爲os.mkdir(x)給你一個錯誤。)

你以前的代碼試圖創建幾個目錄,所有的目錄都被命名爲「<open file 'names.txt', mode 'r' at 0X00000000025E6300>」。

+0

工作。有時候,我只需要另一雙眼睛:)。你是對的,我添加了str,因爲os.mkdir(x)給我一個錯誤。 – DarkKnight4251

0

檢查當前的工作目錄:

>>> import os 
>>> os.getcwd() 

你可能會發現你的程序maynot有適當的權限,使對目錄更改。

嘗試改用別的東西,如:

>>> os.chdir("<someAbsolutePath>") 

如果您發現該程序可以寫/做出另一個目錄的變化,那麼你可能需要更改程序的權限。

+0

好想法!我之前已經用這個檢查過代碼,並且沒有關係,所以我把它拿出來去掉了額外的代碼。 – DarkKnight4251

0

您可能會遇到特殊字符和名稱之間的空格問題。當您無法避開多字目錄名稱之間的空格時,Windows不喜歡它。

嘗試(我)讀取線爲Unicode(避免特殊字符的問題),然後(ii)與下劃​​線連接的名稱,以避免空白的問題:

import os 

with open('names.txt', 'rU') as x: 
    for line in x: 
     line = line.strip().split() 
     filename = "_".join([i for i in line]) 
     os.mkdir(filename) 
+0

在這種情況下,我不必這麼做,但我絕對會在未來的項目中記住這一點。謝謝! – DarkKnight4251

相關問題