2016-12-05 178 views
3

我正在嘗試編寫一個快速python腳本來遍歷當前文件夾中的所有csv文件,並從中刪除標題行,然後將它們存儲在單獨的文件夾中。Python [Errno 13] Permission denied:

當前工作目錄有四個示例csv文件和python腳本。一旦執行該腳本將創建HeaderRemoved目錄。

看來,一旦文件夾被創建,試圖讀取文件的代碼正試圖訪問該文件夾,但看着代碼,我不知道爲什麼會這樣。

我現在在Windows機器上。

import csv, os, argparse, string 
from ctypes import * 

os.makedirs('HeaderRemoved', exist_ok=True) 

# Loop through files in the current working directory 
for csvFile in os.listdir('.'): 
    if not csvFile.endswith('.csv'): 
     continue       # Skips non-csv files 
    print ('Removing header from ' + csvFile + '...') 

# Read in CSV skipping the first row 
csvRows = [] 
csvFileObj = open(csvFile) 
csvReader = csv.reader(csvFileObj) 

for row in csvReader: 
    if csvReader.line_num == 1: 
     continue       # Skips the first row 
    csvRows.append(row) 
csvFileObj.close() 

# Write out the CSV file 
csvFileObj = open (os.path.join('HeaderRemoved', csvFile), 'w', newline='') 
for row in csvRows: 
    csvWriter.writerow(row) 

csvFileObj.close() 

輸出示例:

Removing header from examplefile_1.csv... 
Removing header from examplefile_2.csv... 
Removing header from examplefile_3.csv... 
Removing header from examplefile_4.csv... 
Traceback (most recent call last): File "atbs_csv_parse.py", line 14, in <module> 
    csvFileObj = open(csvFile) PermissionError: [Errno 13] Permission denied: 'HeaderRemoved' 
+4

狠抓壓痕。看看你的'csvFileObj =開放(csvFile)'是不是你的'爲csvFile在os.listdir內( ''):'塊?這意味着,你只打開了'for'循環認爲* *最後文件,無論是文件是否做了或沒有'.csv'擴展。 –

+0

這與壓痕一個問題:文件夾'HeaderRemoved'可能是由'os.listdir'返回的最後一個文件,你試圖打開並刪除其中的頭_only_,不能打開爲CSV文件(它是一個文件夾)。因此,「權限被拒絕」錯誤。 –

回答

2

正如查爾斯·達菲在我原來的問題評論說,這個問題是事實,代碼閱讀和線的書面文件尚未縮進將落入for循環。更正縮進可以解決問題,現在可以按照需要工作。

一個很好的提醒總是檢查簡單的事情....我得到了如此包裝,爲什麼它不工作,我甚至沒有注意到缺乏縮進。

相關問題