【发布时间】:2017-04-20 11:14:02
【问题描述】:
我正在尝试编写一个快速的 python 脚本来遍历当前文件夹中的所有 csv 文件并从中删除标题行,然后将它们存储在单独的文件夹中。
当前工作目录有四个示例 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'
【问题讨论】:
-
密切注意缩进。看看你的
csvFileObj = open(csvFile)怎么不在你的for csvFile in os.listdir('.'):块内?这意味着您只打开for循环考虑的 last 文件,无论该文件是否具有.csv扩展名。 -
这是缩进的问题:文件夹
HeaderRemoved可能是os.listdir返回的最后一个文件,您正试图打开并删除标题 only它,不能作为 CSV 文件打开(它是一个文件夹)。因此,Permission Denied错误。