提问者:小点点

Python[Errno 13]权限被拒绝:


我正在尝试编写一个快速python脚本,遍历当前文件夹中的所有csv文件,并从中删除标题行,然后将它们存储在单独的文件夹中。

当前工作目录有四个示例csv文件和python脚本。一旦执行,脚本将创建HeaderRemved目录。

看起来,一旦创建了文件夹,试图读取文件的代码就试图访问文件夹,但查看代码时,我不确定为什么会这样。

我现在用的是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'

共3个答案

匿名用户

在我的例子中,我通过Excel打开了csv文件并运行了脚本。然后发生此权限被拒绝的异常。

只需关闭打开的文件并再次运行脚本:)

匿名用户

在我的例子中,相同的错误是因为我传递的是目录名而不是文件名。

也许其他人也有同样的问题。

匿名用户

正如Charles Duffy在我的原始问题下所评论的那样,问题实际上是用于读取和写入文件的代码行没有缩进到for循环中。修正缩进修正了这个问题,现在它可以根据需要工作了。

一个很好的提醒总是检查简单的事情......我太专注于为什么它不起作用了,以至于我甚至没有注意到缺少压痕。