我正在尝试编写一个快速的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()
Run Code Online (Sandbox Code Playgroud)
样本输出:
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'
Run Code Online (Sandbox Code Playgroud)
正如 Charles Duffy 在我最初的问题下评论的那样,问题实际上是用于读取和写入文件的代码行没有缩进到 for 循环内。更正缩进解决了问题,现在它可以按预期工作。
一个很好的提醒,要始终检查简单的事情......我太专注于为什么它不起作用,以至于我什至没有注意到缺少缩进。