Python [Errno 13] 权限被拒绝:

Python [Errno 13] Permission denied:

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

当前工作目录有四个示例 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'

正如 Charles Duffy 在我原来的问题下评论的那样,问题实际上是用于读取和写入文件的代码行没有缩进到 for 循环中。更正缩进解决了问题,它现在可以正常工作了。

一个很好的提醒,要始终检查简单的事情....我对为什么它不起作用以至于我什至没有注意到缺少缩进。

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

可能是其他人的同样问题

在我的例子中,我通过 Excel 和 运行 脚本打开了 csv 文件。然后发生此 Permission denied 异常。

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

脚本中的文件在系统某处打开。这就是出现“PermissionError : [Error 13]”的原因。

解决方案:
只需关闭文件和 运行 脚本即可。您不会收到错误消息。

如果您遇到可以使用具有硬编码路径的 csv 文件但不能与 windows 目录或文件路径一起使用的问题,因为 pandas 或其他库不支持有权直接使用该对象,因此您必须将其转换为搅拌和使用。我遇到了这个问题,这个解决方案对我有用。

from pathlib import Path
cur_dir=Path.cwd()
#cwd = os.getcwd()
csv_path=str(cur_dir)+"\..\Dataset\FuelConsumptionCo2.csv"
df = pd.read_csv(csv_path)