1. 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) + '\n')
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")
#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) + '\n')
tFilename = os.path.join(sourceFolder,targetFile + "_rece.txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tList) #將列表保存到文件中
tFile.close()
if __name__ == "__main__" :
Rece("access","access")
2. python如何實現分行提取指定字元串
python讀取文件內容的方法:一.最方便的方法是一次性讀取文件中的所有內容並放置到一個大字元串中:all_the_text=open('thefile.txt').read()#文本文件中的所有文本all_the_data=open('abinfile','rb').read()#二進制文件中的所有數據為了安全起見,最好還是給打開的文件對象指定一個名字,這樣在完成操作之後可以迅速關閉文件,防止一些無用的文件對象佔用內存。舉個例子,對文本文件讀取:file_object=open('thefile.txt')try:all_the_text=file_object.read()finally:file_object.close()不一定要在這里用Try/finally語句,但是用了效果更好,因為它可以保證文件對象被關閉,即使在讀取中發生了嚴重錯誤。二.最簡單、最快,也最具Python風格的方法是逐行讀取文本文件內容,並將讀取的數據放置到一個字元串列表中:list_of_all_the_lines=file_object.readlines()這樣讀出的每行文本末尾都帶有"\n"符號;如果你不想這樣,還有另一個替代的辦法,比如:list_of_all_the_lines=file_object.read().splitlines()list_of_all_the_lines=file_object.read().split('\n')list_of_all_the_lines=[L.rstrip('\n')forLinfile_object]
3. python怎麼兩兩查找多個文件相同內容
可以用 difflib庫,下面給一個例子,具體需求自己研究
假如在同一個目錄下有a.txt, b.txt 兩個文本文件
a.txt 內容是
aaa
bbb
b.txt內容是
aaa
ccc
import difflib
a = open('a.txt', 'U').readlines()
b = open('b.txt', 'U').readlines()
diff = difflib.ndiff(a, b)
sys.stdout.writelines(diff)
結果是:
aaa
- bbb+ ccc
4. Python,把多個不同文件夾里前幾個字相同的文件名的文件移動到另外一個以這幾個字命名的文件夾里
代碼本身不難,有幾個地方是需要根據具體情況變化的。
基本步驟,就是遍歷不同的文件夾,然後通過遍歷獲取的文件列表,匹配返回條件的文件,移動到指定文件夾。
遍歷不同的文件夾,這個具體情況不同處理也不同,所以也給不了你具體的代碼
5. python文件的創建、寫入、讀取
最近在構思如何 本地化股票數據 ,覺得有必要復習一下python對文件的創建、寫入、和讀取。
首先先了解一下對於文件的處理都有常用函數:
open(path, mode):生成文件對象。
參數說明:path文件路徑、mode文件的操作模式
文件的操作模式說明
1、寫入模式:『w』創建、『wb』創建二進制、『a』追加內容、『ab』二進制形式追加內容(另外如在後面添加『+』號,附加讀取功能如:『w+』)
可用write()、writelines()寫入內容、close()保存文件
注意:windows系統在輸入寫入中文時,輸入參數 encoding=『utf-8』
可用read()函數對文件內容進行讀取
注意:讀取的內容是從結尾開始的,用seek(0)函數指定讀取位置為開頭
這里我用『w+』模式來舉例
2、讀取模式:『r』讀取內容、『rb』讀取二進制內容(區別於寫入模式的讀取,讀取模式從開頭開始讀取)
除了read()、還有readline()調用一次返回一行數據、readlines()返回每行數據list
另外還有mode屬性:看查文件對象的模式、closed屬性:判斷文件是否關閉、name屬性:返迴文件名
這里我還要介紹一個關鍵字with,他是一個表達式能為調用的文件對象別名,且自動關閉文件。
6. python OpenCV視頻拆分圖片代碼
應該是沒有讀進文件。使用opencv讀取視頻,圖片時經常遇到的問題,就是使用cv2.read時不管是否成功讀取文件,他都不會報錯,直到你對讀取到的數據處理時才會報錯。
看你的報錯,frame沒有賦值,說明vc.read()沒有正常執行,所以檢查一下的你的文件是否有問題或者路徑是否正確之類的。
7. python中如何將一個文件拆分為多個文件。即原文件中的一行分為一個文件並輸出
把fv2=open('新文件'+'n','w')中的'n'改成str(n)