python数据读写,包括文本文件、csv、excel、数据库等;
一、python 内置方法
open()函数
语法:open(filename,mode=‘r’,buffering=-1,…)
- mode可选参数,默认值为r。
- buffering也可选参数,默认值为-1(0代表不缓冲,1或者大于1的值表示缓冲一行或指定缓冲区大小)
mode参数:
r 以读模式打开(默认)
w 以写模式打开(清除原内容)
x 以写模式打开,若文件已存在则失败
a 以追加模式打开(从EOF开始,必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开(清空原内容)
a+ 以读和追加模式打开
rb 以二进制读模式打开
wb 以二进制写模式打开(参见w)
ab 以二进制追加模式打开(参见a)
rb+ 以二进制读写模式打开(参见r+)
wb+ 以二进制读写模式打开(参见w+)
ab+ 以二进制读写模式打开(参见a+)
返回值:
open()函数返回一个文件(file)对象
文件对象可迭代
有关闭和读写文件的相关函数/方法
读取/写入文件的两种写法:
# 方法一:普通写法
file1=open("文件地址","读写模式")
file1.write()/file1.read()...
file1.close
# 方法二:使用with关键字写法
with open("文件地址","读写模式") as 变量名:
file1.write('')
使用 with open…as…: 格式要注意
冒号不能掉
对文件操作要缩进
无需用close()关闭
读取文件(read()、readline()、readlines())
方法 | 描述 |
---|---|
read() | 一次性读取整个文件内容。 |
readline() | 每次读取一行内容。内存不够时使用,一般不太用 |
readlines() | 一次性读取整个文件内容,并按行返回到list,方便我们遍历 |
read()
# 普通写法:
file1 = open('F:\\python_test\\scores.txt','r',encoding='utf-8') # \在Python中是转义字符,所以时常会有冲突。为了避坑,Windows的绝对路径通常要稍作处理,写成以下两种格式; 'F:\\python_test\\scores.txt' 或者 r'F:\python_test\scores.txt'
file_read = file1.read()
file1.close()
print(file_read)
# "with open...as...:"格式
with open('F:\\python_test\\scores.txt','r',encoding='utf-8') as f:
file_read =f.read()
print(file_read)
运行结果
罗恩 23 35 44
哈利 60 77 68 88 90
赫敏 97 99 89 91 95 99
马尔福 100 85 90
readlines()
readlines() 会从txt文件取得一个列表,列表中的每个字符串就是scores.txt中的每一行。而且每个字符串后面还有换行的\n符号。
# 普通写法:
file1 = open('F:\\python_test\\scores.txt','r',encoding='utf-8')
file_lines = file1.readlines()
file1.close()
print(file_lines)
# "with open...as...:"格式
with open ('F:\\python_test\\scores.txt','r',encoding='utf-8') as f:
file_lines = f.readlines()
print(file_lines)
运行结果
['罗恩 23 35 44\n', '哈利 60 77 68 88 90\n', '赫敏 97 99 89 91 95 99\n', '马尔福 100 85 90']
写入文件(write()、writelines())
方法 | 描述 |
---|---|
write() | 参数必须是字符串类型 |
writelines() | 参数可以是list(序列)类型 |
write()
如果打开文件模式中包含 w(写入),那么向文件中写入内容时,会先清空原文件中的内容,然后再写入新的内容。
如果你只想增加东西,而不想完全覆盖掉原文件的话,就要使用’a’模式,表示append。新写入的内容会添加到原内容后边。
# 普通写法:
file1 = open('F:\\python_test\\abc.txt','a',encoding='utf-8')
file1.write('张无忌\n')
file1.write('宋青书\n')
file1.close()
# "with open...as...:"格式
with open ('F:\\python_test\\abc.txt','a',encoding='utf-8') as f:
f.write('张无忌\n')
f.write('宋青书\n')
writelines()
# 普通写法:
file1 = open('F:\\python_test\\scores.txt','r',encoding='utf-8')
file2 = open('F:\\python_test\\scores_writelines.txt','w+',encoding='utf-8')
file2.writelines(file1.readlines())
file1.close()
file2.close()
# "with open...as...:"格式
with open('F:\\python_test\\scores.txt','r',encoding='utf-8') as f1:
file_read=f1.readlines()
with open('F:\\python_test\\scores_writelines.txt','w+',encoding='utf-8') as f2:
file_write=f2.writelines(file_read)
注意: 使用 writelines() 函数向文件中写入多行数据时,不会自动给各行添加换行符。上面例子中,之所以 scores_writelines.txt 文件中会逐行显示数据,是因为 readlines() 函数在读取各行数据时,读入了行尾的换行符。
其他文件相关函数(fileObject.seek())
fileObject.seek(offset[,whence])
功能:在文件中移动文件指针,从whenc偏移offset个字节。
参数解析:
offset:开始的偏移量,也就是代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始。
whence:参数可选,默认值为0。
- 0:表示文件头部
- 1:表示当前位置
- 2:表示文件尾部
s = '奥利弗 45 67 78'
with open('F:\\python_test\\scores.txt','a+',encoding='utf-8') as f:
f.writelines('\n')
f.writelines(s)
cNames = f.readlines()
print(cNames)
#输出:[]
运行上面的代码,我们可以发现程序结果并没有与我们预想一致,原因是读写文件时都是有一个文件指针,数据从文件指针开始读写,比如刚才我们通过writelines()进行数据写入,那此时文件指针已经在文件的尾部,这时再用readlines(),读出数据的时就会产生不正确的结果。
这时就可以用到文件指针函数seek(),如下所示。
s = '奥利弗 45 67 78'
with open('F:\\python_test\\scores.txt','a+',encoding='utf-8') as f:
f.writelines('\n')
f.seek(0) #让文件指针回到文件开头
f.writelines(s)
cNames = f.readlines()
print(cNames)
#输出:['罗恩 23 35 44\n', '哈利 60 77 68 88 90\n', '赫敏 97 99 89 91 95 99\n', '马尔福 100 85 90\n', '奥利弗 45 67 78\n']
二、python模块(内置模块csv、外部模块openpyxl)
csv模块写入与读取
csv 写入文件步骤
1、创建文件:调用 open() 函数
2、创建对象:借助 writer() 函数
3、写入内容:调用 writer 对象的 writerow() 方法
4、关闭文件:close()
import csv #导入csv模块
csv_file = open('F:\\python_test\\demo.csv','w',newline='',encoding='utf-8') # 调用open()函数打开csv文件,传入参数:文件名“demo.csv”、写入模式“w”、newline=''、encoding='utf-8'。
writer = csv.writer(csv_file) # 用csv.writer()函数创建一个writer对象。
#writer.writerow('\ufeff')#解决使用excel打开时中文字符出现乱码情况
writer.writerow(['电影','豆瓣评分']) # 调用writer对象的writerow()方法,可以在csv文件里写入一行文字 “电影”和“豆瓣评分”。
writer.writerow(['银河护卫队','8.0'])
writer.writerow(['复仇者联盟','8.1'])
csv_file.close() # 写入完成后,关闭文件
csv 读取文件步骤
1、打开文件:调用open()函数
2、创建对象:借助reader()函数
3、读取内容:遍历reader对象
4、打印内容:print()
import csv
csv_file=open('F:\\python_test\\demo.csv','r',newline='',encoding='utf-8') #用open()打开“demo.csv”文件,'r'是read读取模式,newline=''是避免出现两倍行距。encoding='utf-8'能避免编码问题导致的报错或乱码
reader=csv.reader(csv_file) #用csv.reader()函数创建一个reader对象
for row in reader: #用for循环遍历reader对象的每一行。打印row,就能读取出“demo.csv”文件里的内容
print(row)
csv_file.close()
模块openpyxl写入与读取
Excel文件写入步骤
1、创建工作薄:利用openpyxl.Workbook{}创建workbook对象
2、 获取工作表:借助workbook对象的active属性
3、操作单元格:单元格:sheet[‘A1’];一行:append()
4、保存工作薄:save{}
import openpyxl # 导入openpyxl
wb=openpyxl.Workbook() # 利用openpyxl.Workbook()函数创建新的workbook(工作簿)对象,就是创建新的空的Excel文件。
sheet=wb.active # wb.active就是获取这个工作簿的活动表,通常就是第一个工作表。
sheet.title='册页一与一' # 可以用.title给工作表重命名。现在第一个工作表的名称就会由原来默认的“sheet1”改为"new title"。
sheet['A1'] = '吴青峰' # 把'漫威宇宙'赋值给第一个工作表的A1单元格,就是往A1的单元格中写入了'漫威宇宙'。
rows = [['费洛蒙小姐','我会我会','最难的是相遇','低低星垂'],['宁静海','困在','迷幻','极光']] # 先把要写入的多行内容写成列表,再放进大列表里,赋值给rows。
for i in rows: # 遍历rows,同时把遍历的内容添加到表格里,这样就实现了多行写入。
sheet.append(i)
print(rows)
wb.save('F:\\python_test\\song.xlsx') # 保存新建的Excel文件,并命名为“song.xlsx”
Excel文件读取步骤
1、打开工作薄:利用openpyxl.Workbook{}创建workbook对象
2、获取工作表:借助workbook对象的active属性
3、读取单元格:单元格:sheet[‘A1’];一行:append()
4、打印单元格:save{}
wb = openpyxl.load_workbook('F:\\python_test\\song.xlsx') #调用openpyxl.load_workbook()函数,打开“song.xlsx”文件。
sheet = wb['册页一与一']#获取“song.xlsx”工作簿中名为“册页一与一”的工作表。
sheetname = wb.sheetnames#sheetnames是用来获取工作簿所有工作表的名字的。
print(sheetname) #如果你不知道工作簿到底有几个工作表,就可以把工作表的名字都打印出来。
A1_cell = sheet['A1'] #把“册页一与一”工作表中A1单元格赋值给A1_cell,再利用单元格value属性,就能打印出A1单元格的值。
A1_value = A1_cell.value
print(A1_value)
运行结果
三、使用pandas库
写入文件(.csv、.excel、.txt等)
使用pandas写入文件方法如下 :
方法 | 描述 | 返回数据 |
---|---|---|
to_csv() | 写入 .csv 格式 或者 .txt格式 文件 | 输出dataframe格式 |
to_excel() | 写入excel文件(包括xlsx,xls,xlsm格式) | 输出dataframe格式 |
写入 .csv 文件:to_csv()
import pandas as pd
pd.to_csv() 是DataFrame类的方法
基本参数
DataFrame.to_csv(path_or_buf=None, sep=‘,’, na_rep=‘’, float_format=None, columns=None, header=True, index=True, index_label=None, mode=‘w’, encoding=None, compression=‘infer’, quoting=None, quotechar=‘"’, line_terminator=None, chunksize=None, date_format=None, doublequote=True, escapechar=None, decimal=‘.’, errors=‘strict’)
参数名称 | 功能以及含义 |
---|---|
path_or_buf | 文件输出路径 |
sep | 分隔符,默认为’,’ |
na_rep | 缺失数据填充,默认是空字符串;na_rep=“NULL”:空值保存为NULL |
float_format | 字符串格式,小数点保留几位 |
columns | 要输出到csv的列名 |
header | 是否保留列名,默认是保留列名,可传入一个列名列表list |
index | 写行名称(索引),默认写入;index=False:不显示行名 |
encoding | 编码格式,表示在输出文件中使用的编码的字符串,Python2默认为“ASCII”,Python3默认为“UTF-8”。 |
#任意的多组列表
a = [1,2,3]
b = [4,5,6]
#字典中的key值即为csv中列名
dataframe = pd.DataFrame({'a_name':a,'b_name':b})
#将DataFrame存储为csv,index表示是否显示行名
dataframe.to_csv("F:\\python_test\\test.csv",index=False,sep=',')
data.to_csv(data_write_path,float_format='%.2f',encoding='utf=8-sig') #保留两位小数
data.to_csv(data_write_path,columns=['电影'],encoding='utf=8-sig') #只保留名为“电影”这一列
data.to_csv(data_write_path,header=0,encoding='utf=8-sig') #不保存列名
data.to_csv(data_write_path,index=0,encoding='utf=8-sig') #不保存行索引
写入 .txt 文件:to_csv()
import pandas as pd
pd.to_csv()
记得一定设置分割方式:sep
import pandas as pd
data_read_path='F:\\python_test\\demo.csv'
data=pd.read_csv(data_read_path)
data.to_csv('F:\\python_test\\demo_save.txt', sep='\t', index=False)
写入 .excel 文件:to_excel()
import pandas as pd
pd.to_excel()
基本参数
DataFrame.to_excel(excel_writer, sheet_name=‘Sheet1’, na_rep=‘’, float_format=None, columns=None,
header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True,
encoding=None, inf_rep=‘inf’, verbose=True, freeze_panes=None)
参数名称 | 功能以及含义 |
---|---|
excel_writer | 文件路径或现有的ExcelWriter |
sheet_name | 它是指包含DataFrame的工作表的名称。 |
其他参数意义和to_csv()相似,可以参考前面to_csv()例子。
单个sheet写入
import pandas as pd
df1 = pd.DataFrame({'One': [1, 2, 3]})
df1.to_excel('F:\\python_test\\excel1.xlsx', sheet_name='test1', index=False) # index false为不写入索引
读取文件(.csv、.excel、.txt等)
使用pandas读取文件方法如下 :
方法 | 描述 | 返回数据 |
---|---|---|
read_csv() | 读取csv格式文件 | 输出dataframe格式 |
read_excel() | 读取excel文件(包括xlsx,xls,xlsm格式) | 输出dataframe格式 |
read_table() | 读取txt文件,通过sep参数(分隔符)的控制来对任何文本文件读取 | |
read_json() | 读取json格式文件 | |
read_html() | 读取html表格 | |
read_clipboard() | 读取剪切板内容 | |
read_pickle() | 读取pickled持久化文件 | |
read_sql() | 读取数据库数据,连接好数据库后,传入sql语句即可。 | |
read_dhf() | 读取hdf5文件,适合大文件读取。 | |
read_parquet() | 读取parquet文件 | |
read_sas() | 读取sas文件 | |
read_stata() | 读取stata文件 | |
read_gdp() | 读取google_blgquery数据 |
读取 .csv 文件:read_csv()
pandas.read_csv(filepath_or_buffer, sep=, delimiter=None, header=‘infer’, names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, cache_dates=True, iterator=False, chunksize=None, compression=‘infer’, thousands=None, decimal=’.’, lineterminator=None, quotechar=’"’, quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, dialect=None, error_bad_lines=True, warn_bad_lines=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None, storage_options=None)
基本参数
参数名称 | 功能以及含义 |
---|---|
filepath_or_buffer | 可以是文件路径、可以是URL,也可以是实现read方法的任意对象。 |
sep | 字符串,表示分隔符,默认为’,’ .。 |
delimiter | 分隔符的另一个名字,与sep功能相似,默认None。 |
delim_whitespace | 默认为False,设置为True时,表示分隔符这空白字符,可以是空格,‘\t’等等。不管分隔符是什么,只要是空白字符,那么可以通过delim_whitespace=True进行读取。delim_whitespace=True |
header | 设置导入DataFrame的列名称,默认为”infer“,注意它与下面介绍的names参数的微妙关系。header=1:指定header为1,则选取第二行当做表头,第二行下面为数据 |
names | 当names没被赋值时,header=0,即选取数据文件的第一行作为列名;当names被赋值,header没被赋值时,header=None。如果都赋值,就会实现两个参数的组合功能。names=[‘id’,‘movies’,‘grades’,‘date’] |
index_col | 读取文件之后得到的DataFrame的索引默认是0,1,2…,我们可以通过set_index设定索引,但是也可以在读取的时候就指定某列为索引,如index_col="电影"表示指定“电源”这一列为索引列。 |
usecols | 如果一个数据集中含有很多列,但是我们在读取的进修只想要使用到的列,就可以使用这个参数。如:usecols=[“电影”]表示仅读取“电源”这一列 |
mangle_dupe_cols | 在实际工作中,我们得到的数据会很复杂,有时导入的数据会含有名字相同的列。参数 mangle_dupe_cols 会将重名的列后面多一个 .1,该参数默认为 True,如果设置为 False,会抛出不支持的异常。 |
prefix | 当导入的数据没有header时,设置此参数会自动加一个前缀,如: prefix=“hello”,列名为:hello0,hello1,hello2.。。。。。 |
header、names
1、 csv文件有表头并且是第一行,那么names和header都无需指定;
2、csv文件有表头、但表头不是第一行,可能从下面几行开始才是真正的表头和数据,这个时候指定header即可;
3、csv文件没有表头,全部是纯数据,那么我们可以通过names手动生成表头;
4、csv文件有表头、但是这个表头你不想用,这个时候同时指定names和header。先用header选出表头和数据,然后再用names将表头替换掉,就等价于将数据读取进来之后再对列名进行rename;
#header=0,即选取文件的第一行作为表头
pd.read_csv(data_path,sep=',')
#不指定names,指定header为1,则选取第二行当做表头,第二行下面为数据。
pd.read_csv(data_path,sep=',',header=1)
pd.read_csv(data_path,sep=',',names=['id','movies','grades','date'])
#相当于先不看names,只看header,header为0代表先把第一行当做表头,下面的当成数据;然后再把表头用names给替换掉。
pd.read_csv(data_path,sep=',',names=['id','movies','grades','date'],header=0)
最后一个结果:
index_col
index_col:我们在读取文件之后所得到的DataFrame的索引默认是0、1、2……,我们可以通过set_index设定索引,但是也可以在读取的时候就指定某列为索引。
pd.read_csv(data_path,sep=',',index_col="电影")
usecols
如果一个数据集中有很多列,但是我们在读取的时候只想要使用到的列,我们就可以使用这个参数。
pd.read_csv(data_path,sep=',',usecols=["电影"])
通用解析参数
参数名称 | 功能以及含义 |
---|---|
dtype | 在读取数据的时候,设定字段的类型。 |
engine | pandas解析数据时用的引擎,目前解析引擎有两种:c、python。默认为 c,因为 c 引擎解析速度更快,但是特性没有 python 引擎全。如果使用 c 引擎没有的特性时,会自动退化为 python 引擎。 |
converters | 读取数据的时候对列数据进行变换。 |
skiprows | 表示过滤行,想过滤哪些行,就写在一个列表里面传递给skiprows即可。注意的是:这里是先过滤,然后再确定表头。skiprows=[0]:这里把第一行过滤掉了,因为第一行是表头,所以在过滤掉之后第二行就变成表头了。 |
skipfooter | 从文件末尾未过滤行。skipfooter=3:过滤末尾的3行 |
nrows | 设置一次性读入的文件行数。如:nrows=1 |
comment | 指定注释符,在读取数据时,如果碰到行首指定的注释符,则跳过该行。 |
例如,编号为“0002”,如果默认读取的时候,会显示为2,所以这个时候要把他转为字符串类型,才能正常显示为0002:
pd.read_csv(data_path,sep=',',dtype={"编号": str})
pd.read_csv(data_path, sep=",", skiprows=lambda x:x>0 and x%2 == 0) #由于索引从0开始,所以凡是索引大于0、并且%2等于0的记录都过滤掉。索引大于0,是为了保证表头不被过滤掉。
nrows:设置一次性读入的文件行数。
na_values
该参数可以配置哪些值需要处理成NaN
pd.read_csv(data_path, sep=",", na_values={"电影": ["银河护卫队", "复仇者联盟"]})
时间处理相关参数
参数名称 | 功能以及含义 |
---|---|
parse_dates | 指定某些列为时间类型,这个参数一般搭配date_parse使用。 |
date_parser | 用来配合parse_dates参数的,因为有的列虽然是日期,但没办法直接转化,需要我们指定一个解析格式。 |
infer_datetime_format | 参数默认为 False。如果设定为 True 并且 parse_dates 可用,那么 pandas 将尝试转换为日期类型,如果可以转换,转换方法并解析,在某些情况下会快 5~10 倍。 |
from datetime import datetime
data_1=pd.read_csv(data_path,sep=',')
data_2=pd.read_csv(data_path, sep=",", parse_dates=["日期"], date_parser=lambda x: datetime.strptime(x, "%Y-%m-%d"))
读取 .excel 文件:read_excel()
pandas.read_excel(io,sheet_name=0,
header=0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,keep_default_na=True,verbose=False,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,convert_float=True,mangle_dupe_cols=True,**kwds)
io:支持str,bytes,ExcelFile, xlrd.Book, path object, or file-like object。
默认读取第一个sheet的全部数据
sheet_name():参数支持str,int,list,None,default()格式,
str字符串用于引用的sheet的名称,如:pd.read_excel(excel_path,sheet_name=“无与伦比的美丽”);
int整数用于引用的sheet的索引(从0开始),如:pd.read_excel(excel_path,sheet_name=2,names=[“song”],header=None)
读取 .txt 文件:read_table()
pandas.read_table(filepath_or_buffer, *, sep=_NoDefault.no_default, delimiter=None, header=‘infer’, names=_NoDefault.no_default, index_col=None, usecols=None, squeeze=None, prefix=_NoDefault.no_default, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, cache_dates=True, iterator=False, chunksize=None, compression=‘infer’, thousands=None, decimal=‘.’, lineterminator=None, quotechar=‘"’, quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, encoding_errors=‘strict’, dialect=None, error_bad_lines=None, warn_bad_lines=None, on_bad_lines=None, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None, storage_options=None)
有一个test.txt文件,内容如下:
import pandas as pd
#用read_table函数读取文本文件的数据
data=pd.read_table('F:\\python_test\\test.txt', #文件路径,前面的filepath_or_buffer符可以省略掉
sep=',',#指定数据中变量之间的分隔符,注意这里是中文的逗号
header=None , #不需要将原来的数据中的第一行读作表头
names=['id','name','gender','native place'] , #重新为各列起变量名称
converters={'id':str} ,#将ID转换为字符串,以免开头的00消失
skiprows=2 , #跳过开头的两行数据
skipfooter=2, #跳过末尾的两行数据
comment='!', #不读取“!”开头的数据行
engine='python',#skipfooter:从文件末尾过滤行,解析引擎退化为 Python,C 解析引擎没有这个特性。
encoding='utf-8' #为防止中文乱码
)
运行结果
三、使用numpy库
写入文件(savetxt()、save()、savez())
Numpy写入文件的3中方法:savetxt()、save()、savez()。
方法 | 描述 | 返回数据 |
---|---|---|
savetxt() | 将1维或者2维数组写入txt文本或csv文件 | 数组 |
save() | 写Numpy专用的二进制数据,将数组以未压缩二进制格式保存在扩展名为.npy的文件中。会自动处理元素类型和形状等信息。 | |
savez() | 写Numpy专用的二进制格式文件。将多个数组压缩到一个扩展名为npz的文件。其中每个文件都是一个save()保存的npy文件。 | 数据 |
savetxt()
numpy.savetxt(fname,array,fmt=‘%.18e’,delimiter=None,newline=‘\n’, header=‘’, footer=‘’, comments='# ', encoding=None)**
主要参数
参数名称 | 功能以及含义 |
---|---|
fname | 文件、字符串或产生器,可以是.gz或.bz2的压缩文件。 |
array | 存入文件的数组(一维数组或者二维数组) |
fmt | 写入文件的格式,如%d , %.2f , %.18e,默认值是%.18e(浮点数)。 |
delimiter | 分隔符,通常情况是str可选。 |
header | 将在文件开关写入的字符串。 |
footer | 将在文件尾部写入的字符串。 |
comments | 将附加到header和footer字符串的字符串,以将其标记为注释。默认值:’#’ |
encodiing | 用于编码输出文件的编码。 |
写入 .txt 文件
import numpy as np
arr=np.arrange(12).reshape(3,4)
## 保存为txt文件,fmt缺省取%.18e(浮点数),分割符默认是空格。
np.savetxt("F:\\python_test\\numpy_test_1.txt",arr)