『壹』 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