一、项目内容
打开当前工作目录中所有扩展名为.csv的文件,读取CSV文件的内容,并除掉第一行的内容以重新写入同名的文件。
二、代码分析
- 循环遍历从
os.listdir()
得到的文件列表,跳过非CSV文件。- 创建一个CSV
reader
对象来读取该文件的内容,并利用line_num
属性确定要跳过哪一行。- 创建一个CSV
writer
对象,将读入的数据写入新文件。
1)循环遍历CSV文件
import csv, osos.makedirs('headerRemoved', exist_ok=True)# Loop through every file in the current working directory.
for csvFilename in os.listdir('.'):if not csvFilename.endswith('.csv'):continue # skip non-csv filesprint('Removing header from ' + csvFilename + '...')
2)读入CSV文件
csvRows = []
csvFileObj = open(csvFilename)
readerObj = csv.reader(csvFileObj)
for row in readerObj:if readerObj.line_num == 1:continue # skip first rowcsvRows.append(row)
csvFileObj.close()
3)写入CSV文件,且没有第一行
csvFileObj = open(os.path.join('headerRemoved', csvFilename), 'w', newline='')
csvWriter = csv.writer(csvFileObj)
for row in csvRows:csvWriter.writerow(row)
csvFileObj.close()
4)完整代码
import csv, osos.makedirs('headerRemoved', exist_ok=True)# Loop through every file in the current working directory.
for csvFilename in os.listdir('.'):if not csvFilename.endswith('.csv'):continue # skip non-csv filesprint('Removing header from ' + csvFilename + '...')csvRows = []csvFileObj = open(csvFilename)readerObj = csv.reader(csvFileObj)for row in readerObj:if readerObj.line_num == 1:continue # skip first rowcsvRows.append(row)csvFileObj.close()csvFileObj = open(os.path.join('headerRemoved', csvFilename), 'w', newline='')csvWriter = csv.writer(csvFileObj)for row in csvRows:csvWriter.writerow(row)csvFileObj.close()
5)类似想法
- 在一个CSV文件的不同行或多个CSV文件之间比较数据。
- 从CSV文件复制特定的数据到Excel文件,或反过来。
- 检查CSV文件中无效的数据或格式错误,并向用户提示这些错误。
- 从CSV文件读取数据,将其作为Python程序的输入。