Python读写-------txt,csv,excel文件

公用参数:

#coding:utf-8
SaveOrReadFilePath = ".\TaskId.txt"  # YourselfFileName.txt
WtiteDataList = ["165656", "sdhgghsd", "468*9748", "165656", "sdhgghsd", "468*9748"]
WriteDataList1 = [["asdaf", "dfdfd"],WriteDataList]
PathFile = "F:\CGT\CGTeamWork\TaskId1.txt"

一、TXT

1.写入txt

open:

1)不换行写入
file = open(SaveOrReadFilePath, 'w+')
for da in WtiteDataList:
	file.writelines(da)

file.close()

写入结果:

165656sdhgghsd468*9748165656sdhgghsd468*9748	
2)换行写入
file = open(SaveOrReadFilePath, 'w+')
for da in WtiteDataList:
	file.writelines(da+'\n')

file.close()

写入结果:

165656
sdhgghsd
468*9748
165656
sdhgghsd
468*9748
3)去重写入
file = open(SaveOrReadFilePath, 'w+')
for da in list(set(WtiteDataList)):
	file.writelines(da+'\n')

file.close()

写入结果:

468*9748
sdhgghsd
165656

with open:

1)读文件写入
with open(PathFile, 'r') as f:
	data = f.read()
	with open(SaveOrReadFilePath, 'w') as ff:
		ff.writelines(data)

写入结果:
PathFile文件内容:

134676131454sfg15496
1346761hsfgh3145415496
79689sfg214
796sgg89214
134676131hfgh45415496
7968shgfh9214
skdjfd
4867954

SaveOrReadFilePath文件内容:

134676131454sfg15496
1346761hsfgh3145415496
79689sfg214
796sgg89214
134676131hfgh45415496
7968shgfh9214
skdjfd
4867954
2)直接写入
with open(SaveOrReadFilePath, 'w') as ff:
	ff.write(str(WtiteDataList))

写入结果:

['165656', 'sdhgghsd', '468*9748', '165656', 'sdhgghsd', '468*9748']
3)去重写入txt
with open(PathFile,'r')as f:
	data = f.readlines()
	datalist = set(data)  # 去重
	for da in list(datalist):
		# 这里用a+追加写入,如果用w+就是覆盖写入
		with open(SaveOrReadFilePath, 'a+') as ff:
			ff.writelines(da)

写入结果:
PathFile文件内容:

134676131454sfg15496
1346761hsfgh3145415496
79689sfg214
796sgg89214
134676131hfgh45415496
7968shgfh9214
skdjfd
4867954
134676131454sfg15496
1346761hsfgh3145415496
79689sfg214
796sgg89214
134676131hfgh45415496
7968shgfh9214
skdjfd
4867954

SaveOrReadFilePath文件内容:

7968shgfh9214
134676131454sfg15496
79689sfg214
1346761hsfgh3145415496
134676131hfgh45415496
796sgg89214
4867954
skdjfd
7968shgfh9214
4)不换行写入
for da in WtiteDataList:
	# 这里用a+追加写入,如果用w+就是覆盖写入
	with open(SaveOrReadFilePath, 'a+') as ff:
		ff.write(da)

写入文件内容:

468*9748165656sdhgghsd468*9748165656sdhgghsd468*9748
5)换行写入
for da in WtiteDataList:
	# 这里用a+追加写入,如果用w+就是覆盖写入
	with open(SaveOrReadFilePath, 'a+') as ff:
		ff.write(da+'\n')

写入文件内容:

165656
sdhgghsd
468*9748
165656
sdhgghsd
468*9748

open和with open的writelines和write写入的数据没有区别,只是写入的数据必须都是string类型。
注意:覆盖写入文件只会保存的是最后一个数据,所以根据自己项目需求选择合适方法。

2.读取txt

open:

1)多行读取(数据带有换行符)
file = open(SaveOrReadFilePath, 'r')
filedata = file.read()
print filedata
print type(filedata)
file.close()

会读取最后一行数据后面的换行。
输出结果:

468*9748
sdhgghsd
165656
<type 'str'>
2)单行读取
file = open(SaveOrReadFilePath, 'r')
filedata = file.readline()
print filedata
print type(filedata)
file.close()

会读取第一行数据及它后面的第一个换行。
输出结果:

468*9748

<type 'str'>
3)多行读取(数据带有换行符)
file = open(SaveOrReadFilePath, 'r')
filedata = file.readlines()
print filedata
print type(filedata)
file.close()

输出结果:

['468*9748\n', '\n', '\n', 'sdhgghsd\n', '165656']
<type 'list'>
4)多行读取(数据不带换行符)
file = open(SaveOrReadFilePath)
filedata = file.readlines()
newlist = []
for i in filedata:
	newlist.append(i.strip())
print newlist
file.close()

输出结果:

['468*9748', 'sdhgghsd', '165656']

with open

1)全部读取
with open(SaveOrReadFilePath, 'r') as f:
	data = f.read()
	print data
	print type(data)

read全部读取,输出形式按行输出,但是整体属于一个string类型。
输出结果:

['165656', 'sdhgghsd', '468*9748', '165656', 'sdhgghsd', '468*9748']
['165656', 'sdhgghsd', '468*9748', '165656', 'sdhgghsd', '468*9748']
['165656', 'sdhgghsd', '468*9748', '165656', 'sdhgghsd', '468*9748']
['165656', 'sdhgghsd', '468*9748', '165656', 'sdhgghsd', '468*9748']
['165656', 'sdhgghsd', '468*9748', '165656', 'sdhgghsd', '468*9748']
<type 'str'>
2)单行读取
with open(SaveOrReadFilePath, 'r') as f:
	data = f.readline()
	print data
	print type(data)

只读取一行即该行后面的一个换行符,输出类型为string。
输出结果:

['165656', 'sdhgghsd', '468*9748', '165656', 'sdhgghsd', '468*9748']

<type 'str'>
3)多行读取(数据带有换行符)
with open(SaveOrReadFilePath, 'r') as f:
	data = f.readlines()
	print data
	print type(data)

读取全部数据,并保存到一个列表中,以列表(list)形式输出。
输出结果:

["['165656', 'sdhgghsd', '468*9748', '165656', 'sdhgghsd', '468*9748']\n", '\n', '\n', '\n', "['165656', 'sdhgghsd', '468*9748', '165656', 'sdhgghsd', '468*9748']\n", "['165656', 'sdhgghsd', '468*9748', '165656', 'sdhgghsd', '468*9748']\n", "['165656', 'sdhgghsd', '468*9748', '165656', 'sdhgghsd', '468*9748']\n", "['165656', 'sdhgghsd', '468*9748', '165656', 'sdhgghsd', '468*9748']\n"]
<type 'list'>
4)多行读取(数据不带换行符)
newlist = []
with open(SaveOrReadFilePath, 'r') as f:
	data = f.readlines()
	for i in data:
		newlist.append(i.strip())
	print newlist

输出结果:

['468*9748', 'sdhgghsd', '165656']
3.删除txt数据
readata = (i for i in open(PathFile, 'r') if '4867954' not in i )
f = open(SaveOrReadFilePath, 'w')
f.writelines(readata)
f.close()

PathFile文件内容:

134676131454sfg15496
1346761hsfgh3145415496
79689sfg214
796sgg89214
134676131hfgh45415496
7968shgfh9214
skdjfd
4867954
134676131454sfg15496
1346761hsfgh3145415496
79689sfg214
796sgg89214
134676131hfgh45415496
7968shgfh9214
skdjfd
4867954

SaveOrReadFilePath文件内容:

134676131454sfg15496
1346761hsfgh3145415496
79689sfg214
796sgg89214
134676131hfgh45415496
7968shgfh9214
skdjfd
134676131454sfg15496
1346761hsfgh3145415496
79689sfg214
796sgg89214
134676131hfgh45415496
7968shgfh9214
skdjfd

二、CSV

1.写入csv
1)字典形式写入
import pandas
data = pandas.DataFrame({'data':WriteDataList})
data.to_csv('YourselfFileName.csv', index=False, sep=',')

写入结果:

data
165656
sdhgghsd
468*9748
165656
sdhgghsd
468*9748
2)列表写入
import csv

单行写入

with open('YourselfFileName.csv', 'w') as csvf:
	csvwrite = csv.writer(csvf)
	csvwrite.writerow(WriteDataList)

写入结果:

165656,sdhgghsd,468*9748,165656,sdhgghsd,468*9748

多行写入

with open('YourselfFileName.csv', 'w') as csvf:
	csvwrite = csv.writer(csvf)
	csvwrite.writerows(WriteDataList1)  # WriteDataList1多维数组

写入结果:

asdaf,dfdfd

165656,sdhgghsd,468*9748,165656,sdhgghsd,468*9748
2.读取csv
1)字典读取
import pandas
data = pandas.read_csv('YourselfFileName.csv')
print data
print type(data)

输出结果:

	data
0    165656
1  sdhgghsd
2  468*9748
3    165656
4  sdhgghsd
5  468*9748
<class 'pandas.core.frame.DataFrame'>

输出结果自带行号。

2)列表读取
with open('YourselfFileName.csv', 'r') as csvf:
	csvread = csv.reader(csvf)
	print csvread
	for data in csvread:
		print data
		print type(data)

输出结果:

<_csv.reader object at 0x0000000004EB1CA8>
['asdaf', 'dfdfd']
<type 'list'>
['165656', 'sdhgghsd', '468*9748', '165656', 'sdhgghsd', '468*9748']
<type 'list'>

三、Excel

1.创建Excel
from openpyxl import Workbook
from openpyxl import load_workbook
dataexcel = Workbook()
dataexcel.save(filename="YourselfFileName.xlsx")
2.写入excel
dataexcel = load_workbook(filename="YourselfFileName.xlsx")
excelsheet = dataexcel.active
excelcell = excelsheet["A1"]
excelcell.value = "afafd dfdvfxd dfdsv"
dataexcel.save(filename="YourselfFileName.xlsx")
3.筛选读取数据
excelcell.auto_filter.ref = excelcell.dimensions
4.删除行和列
# 删除第二行后的四行
excelsheet.delete_rows(idx=2,amount=4)
# 删除第五列后的三列
excelsheet.delete_cols(idx=5,amount=3)
5.插入
# 表示三行后插入两行
excelsheet.insert_cols(idx=3,amount=2)

Excel的结果我这边无法展示,因为所有操作我都不能保存,总说我没有权限,我也很郁闷,代码应该没什么大问题,如果有bug欢迎评论或私聊交流经验哦^^~~~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值