‘壹’ python 文本文件处理
分隔日志文件存为小文件
#coding:utf-8
#file: FileSplit.py
import os,os.path,time
def FileSplit(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
number = 100000 #每个小文件中保存100000条数据
dataLine = sFile.readline()
tempData = [] #缓存列表
fileNum = 1
if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建
os.mkdir(targetFolder)
while dataLine: #有数据
for row in range(number):
tempData.append(dataLine) #将一行数据添加到列表中
dataLine = sFile.readline()
if not dataLine :
break
tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + str(fileNum) + ".txt")
tFile = open(tFilename, 'a+') #创建小文件
tFile.writelines(tempData) #将列表保存到文件中
tFile.close()
tempData = [] #清空缓存列表
print(tFilename + " 创建于: " + str(time.ctime()))
fileNum += 1 #文件编号
sFile.close()
if __name__ == "__main__" :
FileSplit("access.log","access")
分类汇总小文件:
#coding:utf-8
#file: Map.py
import os,os.path,re
def Map(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
dataLine = sFile.readline()
tempData = {} #缓存列表
if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建
os.mkdir(targetFolder)
while dataLine: #有数据
p_re = re.compile(r'(GET|POST)s(.*?)sHTTP/1.[01]',re.IGNORECASE) #用正则表达式解析数据
match = p_re.findall(dataLine)
if match:
visitUrl = match[0][1]
if visitUrl in tempData:
tempData[visitUrl] += 1
else:
tempData[visitUrl] = 1
dataLine = sFile.readline() #读入下一行数据
sFile.close()
tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + ' ')
tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + "_map.txt")
tFile = open(tFilename, 'a+') #创建小文件
tFile.writelines(tList) #将列表保存到文件中
tFile.close()
if __name__ == "__main__" :
Map("access\access.log1.txt","access")
Map("access\access.log2.txt","access")
Map("access\access.log3.txt","access")
3. 再次将多个文件分类汇总为一个文件。
#coding:utf-8
#file: Rece.py
import os,os.path,re
def Rece(sourceFolder, targetFile):
tempData = {} #缓存列表
p_re = re.compile(r'(.*?)(d{1,}$)',re.IGNORECASE) #用正则表达式解析数据
for root,dirs,files in os.walk(sourceFolder):
for fil in files:
if fil.endswith('_map.txt'): #是rece文件
sFile = open(os.path.abspath(os.path.join(root,fil)), 'r')
dataLine = sFile.readline()
while dataLine: #有数据
subdata = p_re.findall(dataLine) #用空格分割数据
#print(subdata[0][0]," ",subdata[0][1])
if subdata[0][0] in tempData:
tempData[subdata[0][0]] += int(subdata[0][1])
else:
tempData[subdata[0][0]] = int(subdata[0][1])
dataLine = sFile.readline() #读入下一行数据
sFile.close()
tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + ' ')
tFilename = os.path.join(sourceFolder,targetFile + "_rece.txt")
tFile = open(tFilename, 'a+') #创建小文件
tFile.writelines(tList) #将列表保存到文件中
tFile.close()
if __name__ == "__main__" :
Rece("access","access")
‘贰’ python 对文件进行处理。
python for symbian 里有一个linechace库,可以实现对文件每行的缓存,便于处理每一行的内容;
每行最后的32:T>G,34:G>A可以用正则表达式来处理。
*:linechace完全可以在任何Python环境使用。
‘叁’ Python 文件处理的几点注意事项
文件处理在编程中是常见的操作,文件的打开,关闭,重命名,删除,追加,复制,随机读写非常容易理解和使用。需要注意的是文件的安全关闭,采用with语句轻松便捷:
with open(pathname,”r”) as myfile:
do_some_with(myfile)
‘肆’ python的文件处理
问题表述看不明白
感觉应该是用正则做
‘伍’ PYTHON文件处理相关
search第一个参数扩展名,第二个参数根路径
importos
defsearch(s,path=os.path.abspath('.')):
forzinos.listdir(path):
ifos.path.isdir(path+os.path.sep+z):
print('Currnet:',path)
path2=os.path.join(path,z)
print('future:',path2)
search(s,path2)
elifos.path.isfile(path+os.path.sep+z):
ifos.path.splitext(z)[1].upper()==s:
withopen(os.path.join(path,z),'r')asf:
withopen('新的.txt','a')asfw:
fw.write(f.read())
print(os.path.join(path,z))
search('.TXT','H:\TEMP')
‘陆’ python小白 求助 读取txt文件,并进行数据处理
让写代码给5分,太没诚意了,哈哈,不过还是给你吧,没有测试过,你试试再说吧,执行的时候把最后一行的参数设置成你文件的存放位置就可以了
deffile_pro(file_dir):
importos
"""
输入一个文件夹,文件夹下是所有待处理文件
:paramfile_dir:待处理的文件所在的文件夹
:return:null
"""
#获取文件列表
file_list=os.listdir(file_dir)
#建立结果文件,与程序在同级目录
result_file=open('result.csv','a+',encoding='GBK')
forfileinfile_list:
file_to_pro=file_dir+os.sep+file
result=[]
fornum,lineinenumerate(open(file_to_pro)):
ifnum>=32:
ifline.split('')[2]=='3CD':
result.clear()
result+=line.split('')[6:]
last_result=file_to_pro+',3CD,'
foriteminresult:
last_result+=(str(int(item,16))+',')
result_file.writelines(last_result)
file_pro("c:\")
‘柒’ python文件操作问题
你好:
请看代码:
txtpath1=r"a.txt"
txtpath2=r"b.txt"
txtpath3=r"c.txt"
txtpath4=r"d.txt"
fpa=open(txtpath1)
fpb=open(txtpath2)
fpc=open(txtpath3)
fpd=open(txtpath4,"w")
arrD=[]
forkkkinrange(50):
arrD.append(0)
defWriteD():
forkkkkinarrD:
fpd.write(str(kkkk))
fpd.write("")
fpd.write(" ")
arrC=[]
forlinecinfpc.readlines():
arrC.append(linec.replace(" ",""))
arrB=[]
forlinebinfpb.readlines():
arrB.append(lineb.replace(" ",""))
forlineainfpa.readlines():
flag=True
linea=linea.replace(" ","")
foriinrange(len(arrB)):
ifarrB[i]==linea:
printlinea
printarrB[i]
printarrC[i]
flag=False
fpd.write(linea)
fpd.write(" ")
fpd.write(arrC[i])
fpd.write(" ")
ifflag:
printlinea
fpd.write(linea)
fpd.write(" ")
WriteD()
print"Done!"
fpa.close()
fpb.close()
fpc.close()
fpd.close()
‘捌’ python文件操作
我觉得要逐行的话最好这样写:
forlineinfo.readlines():
至于为什么直接fo可以迭代出每行,应该是open函数返回值的内部实现和返回值类型决定的(应该在c代码里,直接转open定义看不见实现细节)。
‘玖’ 想问python能处理哪些类型的文件
可以处理doc(x) xls (x)ppt(x)等文件,有相关的库,网络选一个。
文件格式基本上标准库里有处理html xml json csv等的
其他差不多都有第三方模块,题主自己搜索。
‘拾’ Python中文件处理
#coding=gbk
LB = [ "张三","李四","王五","12345","abcdfg1233"]
# 把上面列表中 含"12"子串的元素存入文件 "C:\\1.txt"
f = open("C:\\1.txt","wt")
for s in LB:
if s.find("12")>=0: #选择性写入,就是条件判断吧?
f.write( s+"\n")
f.close()
# 运行本程序后,查看 C:\1.txt
# 内容应为
# 12345
# abcdfg