公用参数:
#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欢迎评论或私聊交流经验哦^^~~~