Python读取文本文件(txt、CSV、Excel)——纯干货分享

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数据分析基础》

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值