Python读取文本文件(txt、CSV、Excel)
相关程序及数据文件:
链接:https://pan.baidu.com/s/1wVNb3w_eFyVS4nIK_FBfOg
提取码:c3t2
复制这段内容后打开百度网盘手机App,操作更方便哦
读取文本文件(传统方法)
保存数据的文件可能是文本文件、CSV文件、Excel文件或者其他类型。访问数据文件是利用python进行数据处理、加工和分析的前替。一般我们可以通过写固定的文件名称访问,但这样无法处理多个文件。读取不同文件的方法是,在终端窗口(cmd)的命令行中,Python脚本的名字后加上完整文件路径。为此,需要引入sys模块。创建一个.py文件,内容如下,保存为script.py
#!/usr/bin/env python3
from math import exp, log, sqrt
import re
from datetime import date,time,datetime,timedelta
from operator import itemgetter
import sys
导入sys模块后,我们就可以使用argv列表变量啦,argv[0]就是返回脚本名称,argv[1]是命令行中传递给脚本的第一个附加参数。
我们先创建一个文本文件(txt),保存在桌面上,文件名为file_to_read.txt,之后再读取它。
接下来,在script.py文件中写入代码
imput_file=sys.argv[1]
print("Output")
filereader = open(input_file,'r')
for row in filereader:
print(row.strip())
filereader()
代码的意思是把读取文件的路径名赋值给filereader后,依次打印出来。保存script.py到桌面。
读取文本文件,在cmd中输入下面的命令:
(如果路径不在桌面则,输入cd Desktop)
就可以读取txt文档的内容:
注:如果脚本文件与输入文件不在同一个位置,则需要输入文本文件的完整路径名 ,这样脚本才知道去哪里寻找这个文章,比如
python script.py "C:\Users\Administrator\Desktop>file_to_read.txt"
with语句读取
上述方法在复杂脚本中会导致错误,因为文件一直被打开,直到用close函数关闭。with语句在语句结束时,自动关闭文件。
imput_file = sys.argv[1]
print("Output #144:")
with open(input_file,'r',newline='') as filereader:
for row in filereader:
print("{}".format(row.strip()))
上述都是非常简单的示例,后面的示例,以此为基础访问其他文件类型,或访问多个文件
使用glob读取多个文本文件
glob模块之所以强大,是因为它处理的是文件夹(目录)。
读取多个文件的方法是命令行中将包含输入文件目录路径写在Python脚本名称之后。要使用这种方法,需要引用os模块和glob模块。
#!/usr/bin/enc python3
from math import exp,log,sqrt
import re
from datetime import date,time,datetime,timedelta
from operator import itemgetter
import sys
import glob
import os
os模块函数举例:
os.path.join()函数,巧妙地把一个或多个路径连接在一起。
glob模块可以找出与特定模式相匹配的所有路径名。
读取多个文件,我们再创建一个文本文件another_file_to_read,放到桌面,内容如下:
添加下面代码到script.py文件
inputPath = sys.argv[1]
for input_file in glob.glob(os.path.join(inputPath,'*.txt')):
with open(input_file,'r',newline='') as filereader:
for row in filereader:
print("{}".format(row.strip()))
在cmd中输入py文件+读取路径即可:
C:\Users\Administrator\Desktop>script.py "C:\User\Administrator\Desktop\文件名"
结果:
读取CSV文件
了解如何读取CSV文件,我们先通过基础python代码读取一次,再通过csv模块读取一次。这样我们就知道代码的工作流程了。
创建Script1.py文件,输入下列代码:
#!/usr/bin/env python3
import sys
input_file = sys.argv[1] #cmd 中的第一个文件名称
output_file = sys.argv[2] #cmd 中的第二个文件名称
with open(input_file,'r',newline='') as filereader:
with open(output_file,'w',newline='') as filewriter:
header = filereader.readline()
header = header.strip()
header_list = header.split(',')
print(header_list)
filewriter.write(','.join(map(str,header_list))+'\n')
for row in filereader:
row = row.strip()
row_list = row.split(',')
print(row_list)
filewriter.write(','.join(map(str,row_list))+'\n')
下载数据文件supplier_data.csv,打开可以看到:
再创建一个output.csv,空文件。然后在cmd中输入:
就可以看到读取的文件内容:
CSV模块读取
使用CSV模块读取的优点是,这个模块有利于正确处理数据值中的嵌入逗号和其他复杂模式。比如,$601,500.00 ,采用基础python读取,逗号分割就会分解编程’601’,'500.00’两个数据。
创建Script2.py文件,输入代码:
#!/usr/bin/env python3
import csv
import sys
input_file = sys.argv[1]
output_file = sys.argv[2]
with open(input_file,'r',newline='') as csv_if:
with open(output_file,'w',newline='') as csv_of:
filereader = csv.reader(csv_if,delimiter=',')
filewriter = csv.writer(csv_of,delimiter=',')
for row in filereader:
print(row)
filewriter.writerow(row)
把数据文件中最后一行的cost改为$601,500.00。在cmd运行上面的代码。
最后一行,输出结果依然是我们想要的形式。
pandas模块读取
创建并保存Script3.py文件,写入代码:
#!/usr/bin/env python3
import sys
import pandas as pd
input_file = sys.argv[1]
output_file = sys.argv[2]
data_frame = pd.read_csv(input_file)
print(data_frame)
data_frame.to_csv(output_file,index=False)
同样,在cmd中运行上述代码。可以看到数据形式为DataFrame的输出。
读取Excel文件
把之前用的supplier_data.csv文件,在office中打开,然后另存为excel文件(.xls、.xlsx),用两种读取方法将读取supplier_data.csv,并写入output4.xlsx、output5.xlsx文件中。
1、基础python +xlrd、xlwt模块
2、pandas读取
基础python +xlrd、xlwt模块
先用第一种方法读取,创建Script4.py文件,写入代码保存:
#!/usr/bin/env python3
import sys
from xlrd import open_workbook
from xlwt import Workbook
input_f = sys.argv[1]
output_f = sys.argv[2]
output_wb = Workbook()
output_worksheet = output_wb.add_sheet('supplier_data_output')
with open_workbook(input_f) as wb:
worksheet = wb.sheet_by_name('supplier_data')
for row_index in range(worksheet.nrows):
for column_index in range(worksheet.ncols):
output_worksheet.write(row_index,column_index,worksheet.cell_value(row_index,column_index))
output_wb.save(output_f)
cmd中运行程序:
查看output4文件:
pandas读取excel
第二种方法,创建Script4.py文件,写入代码保存:
#!/usr/bin/env python3
import pandas as pd
import sys
input_f = sys.argv[1]
output_f = sys.argv[2]
date_frame = pd.read_excel(input_f,sheetname='supplier_data')
writer = pd.ExcelWriter(output_f)
date_frame.to_excel(write,sheet_name='supplier_data',index=False)
writer.save()
同样,在cmd中运行:
查看output5.xlsx 文件即可。
刚开始学习写CSDN Blog,希望将此作为自我提升的记录,各位大大有任何建议或问题尽情留言。
欢迎大家的批评与指正。
注:参考书籍《python数据分析基础》