①使用open()方法
Python open()方法用于打开一个文件,并返回文件对象。 在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出OSError。
注意:使用open()方法一定要保证关闭文件对象,即调用close()方法。
open()函数常用形式是接收两个参数:文件名(file)和模式(mode)。
②使用with语句
使用with语句打开文件有几个重要的好处:
自动关闭文件: with语句创建了一个上下文管理器,确保在代码块执行结束时自动关闭文件。这样可以避免忘记手动关闭文件的错误,同时确保及时释放资源。
异常处理: with语句在文件操作中提供了异常处理的机制。如果在文件操作过程中发生异常,with语句会确保文件被正确关闭,防止文件资源泄漏。
简化代码结构: 使用with语句可以简化代码结构,避免显式地调用close方法。这使得代码更加清晰和易读。
Python内置了一个csv模块,该模块提供了用于读取和写入CSV文件的功能。CSV(Comma-Separated Values)是一种简单的文本格式,其中数据字段由逗号或其他分隔符分隔。
以下是csv模块的一些主要功能:
csv.reader(csvfile, delimiter=',', dialect='excel', **fmtparams)
import csv
with open('data.txt', 'r') as file:
csv_reader = csv.reader(file)
for row in csv_reader: #读取一行数据,以逗号进行分隔
print(row) #返回一个列表
import csv
data = [['Name', 'Age', 'City'],
['John', 25, 'New York'],
['Alice', 30, 'San Francisco'],
['Bob', 22, 'Los Angeles']]
with open('example.csv', 'w', newline='') as file:
csv_writer = csv.writer(file)
csv_writer.writerows(data)
csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)
import csv
with open('example.csv', 'r') as file:
csv_reader = csv.DictReader(file)
for row in csv_reader:
print(row)
data = [{'Name': 'John', 'Age': 25, 'City': 'New York'},
{'Name': 'Alice', 'Age': 30, 'City': 'San Francisco'},
{'Name': 'Bob', 'Age': 22, 'City': 'Los Angeles'}]
with open('example.csv', 'w', newline='') as file:
fieldnames = ['Name', 'Age', 'City']
csv_writer = csv.DictWriter(file, fieldnames=fieldnames)
csv_writer.writeheader() #写入标题行
csv_writer.writerows(data) #写入字典数据
假设有一个文本文件data.txt内容如下:
Name, Age, City
John, 25, New York
Alice, 30, San Francisco
Bob, 28, Los Angeles
# 读取文本文件内容 输出到CSV文件
with open('data.txt', 'r') as fi, open('data.csv', 'w', newline='') as fo:
# 逐行读取txt文件
for line in fi:
# 假设txt文件中的字段是由逗号和空格分隔的
fields = line.strip().split(', ')
# 将字段以逗号分隔写入csv文件
fo.write(','.join(fields) + '\n')
总结:
newline=''
参数的作用:
在使用open函数打开文件时,newline='‘参数是为了确保在不同操作系统上正确处理换行符。
在Windows系统上,文本文件的行尾通常由两个字符组成:回车符(\r)和换行符(\n),即"\r\n"。而在类Unix 系统(如Linux和macOS)上,行尾只使用换行符(\n),即"\n"。
在Python中,open函数默认使用操作系统的默认行尾符号。然而,CSV格式通常期望行尾符是\n,而不是\r\n。如果不使用newline=’‘参数,可能会导致在某些情况下生成的CSV文件在不同平台上的行尾符不一致,可能会引起问题。
因此,使用newline=’'参数可以确保在写入CSV文件时,Python会统一使用\n作为行尾符,从而避免潜在的问题。这样做是为了提高跨平台兼容性。
import csv
with open('data.txt', 'r') as fi, open('data.csv', 'w', newline='') as fo:
# 使用CSV读取器逐行读取txt文件
csv_reader = csv.reader(fi)
# 创建CSV写入器
csv_writer = csv.writer(fo)
# 将每一行的内容写入CSV文件
for row in csv_reader:
csv_writer.writerow(row) #writerow()方法是csv.writer对象的一个方法,用于将一行数据写入文件。
import pandas as pd
# 使用pandas读取txt文件
df = pd.read_csv('data.txt', delimiter=', ')
# 将数据写入csv文件
df.to_csv('data.csv', index=False)