文件管理 · 2024年10月12日

python处理文本文件|Python批量修改文本文件内容的方法

Ⅰ 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绋嬪簭鍚屼竴涓鐩褰曚笅锛屾垜浠鏈変竴涓鍚嶄负 pi.txt 鐨勬枃浠讹紝瀹冪殑鍐呭瑰備笅锛 鐜板湪浣跨敤Python鏉ユ墦寮鍜屽叧闂瀹冿細 鎵ц屾ょ▼搴忎笉浼氭湁浠讳綍杈撳嚭锛岃繖琛ㄧず鐫鎵撳紑鍜屽叧闂鏂囦欢閮藉緱鍒颁簡姝g‘鎵ц屻 鍙浠ョ湅鍒帮紝浣跨敤 open() 鍑芥暟鎵撳紑鏂囦欢锛屽弬鏁颁负鏂囦欢鍚嶏紙鎴栨枃浠惰矾寰勶級锛涜ュ嚱鏁颁細杩斿洖涓涓鏂囦欢鍙ユ焺锛屾枃浠跺彞鏌勫苟涓嶄細瀹為檯淇濆瓨鏂囦欢鐨勫唴瀹癸紝鑰屾槸浠h〃鐫涓绉嶆搷浣滐紝鍦ㄤ笂闈㈢殑渚嬪瓙涓锛屾枃浠跺彞鏌勮璧嬪肩粰鍙橀噺 fhand 銆 鎵撳紑鏂囦欢鍚庯紝绋嬪簭鍏锋湁璇伙紙榛樿わ級璇ユ枃浠剁殑鏉冮檺銆 鏈鍚庯紝浣跨敤鏂囦欢鍙ユ焺鐨 close() 鏂规硶鍏抽棴鏂囦欢銆傝繖闈炲父閲嶈侊紝鍥犱负浣跨敤瀹岃屾病鏈夊叧闂鐨勬枃浠朵細鍗犵敤鍐呭瓨鎴栭犳垚瀹夊叏闂棰樸 濡傛灉Python鎵句笉鍒拌ユ枃浠讹紝鍒欎細杩斿洖閿欒锛屾瘮濡備笅闈㈣繖鏍凤細 Python鎻愮ず鎴戜滑娌℃湁鐩稿簲鐨勬枃浠舵垨鑰呯洰褰: 'pii.txt'銆 鎵撳紑鏂囦欢鍚庡氨鍙浠ュ规枃浠惰繘琛屾搷浣滐細 fhand.read() 鏂规硶灏嗘枃浠跺唴瀹逛綔涓轰竴涓瀛楃︿覆杩斿洖銆 鏂囦欢涓鐨勬瘡涓琛屾湯灏句娇鐢ㄦ崲琛岀 \n 琛ㄧず鎹㈣岋紝渚嬪瓙涓鏂规硶 rstrip() 鍘绘帀鏂囨湰涓鐨勬崲琛岀︼紝鐒跺悗杈撳嚭銆 绋嬪簭鐨勮繍琛屾晥鏋滃備笅锛 濡傛灉鍦ㄦ枃浠跺叧闂涔嬪墠绋嬪簭鍙戠敓BUG鎰忓栭鍑猴紝鍒欐枃浠朵笉浼氬叧闂锛屼负浜嗛伩鍏嶆ょ被浜嬩欢鐨勫彂鐢燂紝鍙浠ヤ娇鐢 with 璇鍙ワ細 with 璇鍙ョ殑鐗圭偣鏄鍗充究鍦ㄦ搷浣滄枃浠舵椂鍙戠敓閿欒锛屾枃浠朵篃浼氳嚜鍔ㄨ娓呯悊銆 fhand.read() 铏界劧鍙浠ヨ诲彇鏂囨湰鍐呭癸紝浣嗘槸褰撴垜浠鎯宠侀愯屽勭悊鏂囦欢鍐呭癸紝鎴栬呮枃浠跺緢澶ц屾棤娉曚竴娆℃у姞杞借繘鍐呭瓨鐨勬椂鍊欙紝灏变笉閫傜敤浜嗐 鍙浠ヤ娇鐢 for 璇鍙ラ愯屽勭悊鏂囦欢鍐呭癸細 鏈绋嬪簭涓灏嗘枃浠跺悕淇濆瓨鍦ㄥ彉閲 filename 涓銆 鎵撳紑鏂囦欢鍚庯紝浣跨敤 for 璇鍙ユ寜琛岃诲彇鏂囦欢鍐呭广備緥瀛愪腑锛屾瘡娆″惊鐜渚濇″彇涓琛屾枃鏈浠ュ瓧绗︿覆鐨勬牸寮忎繚瀛樺湪鍙橀噺 line 涓锛屾瘡娆″惊鐜涓鍙橀噺 count 鑷澧1銆 杩欎釜绋嬪簭鐨勪綔鐢ㄦ槸锛屾墦寮绋嬪簭鎵鍦ㄧ洰褰曠殑 when_old.txt 鏂囦欢锛岀劧鍚庣粺璁¤屾暟锛屽苟杈撳嚭缁撴灉銆 when_old.txt 鏂囦欢鐨勫唴瀹规槸锛 鍙浠ヤ娇鐢ㄥ叾浠栨柟娉曟搷浣滃瓧绗︿覆 line 锛 绋嬪簭灏嗕互 'And' 寮澶寸殑琛屾墦鍗板嚭鏉ャ 鎵撳紑鏂囦欢鍚庯紝榛樿ょ殑鏉冮檺鏄璇伙紙r锛夛紝濡傛灉瑕佸啓鏂囦欢锛屽垯闇瑕佷娇鐢ㄥ啓锛坵锛夋垨鑰呰拷鍔狅紙a锛夋潈闄愩 w鏉冮檺锛屾墦寮涓涓鏂囦欢鐢ㄤ簬鍐欏叆銆傚傛灉璇ユ枃浠跺瓨鍦锛屽垯瑕嗙洊璇ユ枃浠讹紱濡傛灉璇ユ枃浠朵笉瀛樺湪锛屽垯鍒涘缓璇ユ枃浠躲 a鏉冮檺锛屾墦寮涓涓鏂囦欢鐢ㄤ簬杩藉姞銆傚傛灉璇ユ枃浠跺瓨鍦锛屽湪鏂囦欢鏈灏捐拷鍔狅紱濡傛灉璇ユ枃浠朵笉瀛樺湪锛屽垯鍒涘缓璇ユ枃浠躲 涓嬮潰鏄涓涓浣跨敤w鏉冮檺鎵撳紑鏂囦欢鐨勪緥瀛愶細 渚嬪瓙涓浣跨敤w鏉冮檺鎵撳紑璇ユ枃浠讹紝骞跺啓鍏ヤ袱琛屻傦紙濡傛灉璇ユ枃浠跺瓨鍦锛屽垯鍐呭逛細琚瑕嗙洊锛 fhand.write() 涓嶄細鑷鍔ㄦ坊鍔犳崲琛岀︼紝鎵浠ュ傛灉闇瑕佹崲琛岋紝闇鍦ㄦ湯灏炬坊鍔 \n 銆 涓嬮潰鎴戜滑鍐欎竴涓缁熻℃枃浠朵腑璇嶉戠殑绋嬪簭銆 瀹冧細缁熻℃枃浠朵腑鍚勪釜璇嶇殑鍑虹幇鐨勬℃暟锛岀劧鍚庣敱楂樺埌浣庢樉绀哄嚭鍓5涓璇嶃 棣栧厛鎴戜滑瀹屾垚鎵撳紑鍜屽叧闂鏂囦欢鐨勭▼搴忓唴瀹癸細 鍦ㄤ緥瀛愪腑锛岀敱鐢ㄦ埛杈撳叆鏂囦欢鍚嶏紝骞朵笖浣跨敤寮傚父鎹曡幏浠ュ勭悊鏂囦欢鎵撳紑鏃剁殑閿欒銆 涓嬮潰瀵瑰唴瀹硅繘琛岀粺璁★細 杩欎釜绋嬪簭锛 濡傛わ紝鎴戜滑灏卞湪瀛楀吀涓瀛樻斁浜 鍗曡瘝:娆℃暟 鐨勯敭鍊煎广 鐢变簬瀛楀吀涓嶈兘淇濆瓨椤哄簭锛屾墍浠ヤ笉鑳藉瑰叾杩涜屾帓搴忋備负姝わ紝灏嗘瘡涓閿鍊煎归兘娣诲姞鍒颁竴涓鍒楄〃涓锛 鍦ㄥ垪琛 word_list 涓锛屾瘡涓椤归兘鏄涓涓鍏冪粍锛屾瘡涓鍏冪粍绗涓涓鍊兼槸鍗曡瘝鍑虹幇鐨勬℃暟锛岀浜屼釜鍊兼槸鍗曡瘝鍐呭广 瀵瑰叾杩涜岄嗗悜锛堢敱澶у埌灏忥級鎺掑簭锛 鎵撳嵃鏈缁堢粨鏋滐細 鏁翠釜绋嬪簭濡備笅锛 涓嬮潰鏄绋嬪簭杩愯岀粨鏋滅殑绀轰緥锛

Ⅲ 用python处理csv文件,最好可以将里面的文本信息转成一个二维数组的形式,具体如下

思路如下:

导入csv库;

打开文件,并用csv库函数reader读入数据;

csv读入的数据是一行一行的,所以通过循环语句把读到的数据放入到数组里

importcsv#必要库导入filepath='test.csv'#定义文件名称,本文件要与当前的.py文件要在同一文件夹下,不然要用绝对路径withopen(filepath,'r')ascsvfile:#打开数据文件reader=csv.reader(csvfile)#用csv的reader函数读取数据文件header=next(reader)#读取数据文件的表头data=[]#定义一个空数组用于保存文件的数据forlineinreader:#循环读取数据文件并保存到数组data中data.append(line)#line是个一维数组,是数据文件中的一行数据print(header)#表头print(data)#读取的二维数组

Ⅳ Python读取文件内容的方法有几种

filename=open('i:\\install\\test.txt','r+')#读取xx路径xx文件;r+代表的是读写并存方式 print filename.read()#读取所有的文件

Ⅳ python如何读取word文件中的文本内容并写入到新的txt文件

Ⅵ python对文件的独操作有哪几种请详细说明每种方法

1.打开文件:f=open(r'E:\PythonProjects\test7\a.txt',mode='rt',encoding='utf-8')以上三个单引号内分别表示:要打开的文件的路径,mode为文件打开方式具体介绍在下文,encoding为文件的字符编码,一般默认为utf-82.读写文件:data=f.read() # 读文件f.write() # 写文件3.关闭文件:f.close()4.为了简便,一般采用上下文的方法进行文件操作,可不用关闭文件with open('a.txt',mode='rt',encoding='utf-8') as f:data=f.read() print(data)with open('a.txt',mode='wt',encoding='utf-8') as f: f.write('hello world')5.控制文件读写的操作:r:(默认模式):只读:以该模式打开文件时,若文件不存在则报错,若文件存在,则文件指针在文件开头,即从文件开头开始读文件w:只写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则清空文件内容,文件指针移到开头a:追加写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则将文件指针移到文件末尾,在文件末尾写入新的内容6.控制文件读写内容的模式:(t 和 b都不能单独使用,必须与r,w,a结合使用)t:(默认):无论读写都是以字符为单位,只能识别文本文件,必须要制定encodingb:无论读写都是以字节为单位,可以识别所有文件,一定不能指定encoding7.文件的拷贝with open ('a.txt',mode='rb') as af,\ open('b.txt',mode='wb') as bf: data=af.read f.write(data)执行程序后,打开文件,即可发现文件已成功拷贝,这里使用 b 而不是用 t 模式,是因为文件有多种格式8.文件的修改:文件的修改是在硬盘上实现文件的覆盖,相当于一个新的文件以旧的文件名来命名的; 文件的修改有俩种方式,分别适用于不同的情景方式一(适用于容量小的文件):这种方式的原理是:创建一个新的文件,将旧文件的内容拷贝到新的文件中;这样内存里就存在俩个文件,故不适用于容量大的文件,具体代码见下方 Viewwith open('a.txt',mode='rt',encoding='utf-8') as f: data=f.read() data_new=data.replace('yang', 'yv')with open('b.txt',mode='wt',encoding='utf-8')as p: p.write(data_new)方式二(适用于容量大的文件):此方式的原理为:读取旧文件的一行内容,修改后写到临时文件中,循环往复直到写完,然后将源文件删除,将临时文件命名为源文件名.这种方式在内存中只存在2行文件,节省内存,可用于大文件import oswith open('b.txt',mode='rt',encoding='utf-8') as f,\ open('.b.txt.swap',mode='wt',encoding='utf-8') as p: for line in f: p.write(line.replace('yv','yang')) # 调用replace方法,将源文件中的'yv',换成'yang'os.remove('b.txt')os.rename('.b.txt.swap','b.txt')9. 文件的阶段:truncate(n)将文件中n个字节后内容全删了,当 n 不存在时,即删除文件全部内容10.文件内指针的移动f.seek(): 指针的移动是以字节为单位的seek 有三种模式:0:(默认模式) 指针在文件开头,只有在 0 模式可以在 t 模式下用,也可以在 b 模式下用,而 1 ,2 模式只能在 b 模式下使用1:指针在当前位置2:指针在文件末尾以下为具体事例:# 0with open('a.txt',mode='rt',encoding='utf-8')as f: f.seek(3,0) print(f.tell()) # 指针当前位置 print(f.read()) # 从指针后读出所有内容 # 1 参照指针当前位置 with open('a.txt',mode='rb')as f: f.read(2) f.seek(4,1) print(f.tell()) print(f.read().decode('utf-8')) # 2 参照文件末尾 with open('a.txt',mode='rb')as f: f.seek(-5,2) print(f.tell()) print(f.read().decode('utf-8'))当 seek处于 2 模式时,可以将文件中新加入的内容打印出来,具体代码如下:# 另一个文件进行写操作,写的代码如下: with open('a.txt',mode='at',encoding='utf-8')as f: f.write('hello world\n')# 每在文件中写入新的内容,都打印出来,以下代码执行打印操作:import timewith open('a.txt',mode='rb')as f: f.seek(0,2) while True: line=f.readline() # readline 可以读取没有内容的部分 # print(line.decode('utf-8')) if len(line)==0: time.sleep(0.1) else: print(line.decode('utf-8'))

Ⅶ python对文本文件的读有哪些方法,写有哪些方法

1 文件读取全文本操作在一定场景下我们需要把文本全部内容读取出来,进行处理。python提供三种函数读取文件,分别是read readline readlines,read():读取文件的全部内容,加上参数可以指定读取的字符。readline():读取文件的一行。readlines():读取文件的所有行到内存中。不同场景下我们可以选择不同函数对文件进行读取。1.1 方法一file_name = input("请输入你要打开的文件的完整路径及名称")file= open(file_name, "r")txt=file.read()# 全文本的处理file.close()使用read函数将文件中的内容全部读取,放在字符串变量txt中。这样操作适合于文本较小,处理简单的情况,当文件较大时,这种方式处理时不合适的。一次性读取较大的文件到内存中,会耗费较多的时间和资源。这时候分批处理效果更好。1.2 方法二file_name = input("请输入你要打开的文件的完整路径及名称")file= open(file_name, "r")txt= file.read(4)# 文本的处理while txt != ""txt= file.read(4)# 批量文本处理file.close()这种方法适合于分批处理文本信息,每次批量读入,批量处理,不会对内存造成较大的压力。1.3 方法三file_name = input("请输入你要打开的文件的完整路径及名称")file= open(file_name, "r")for line infile.readlines():# 处理每一行数据file.close()这种处理方式适合处理以行为分割特点的文本,并且文本较小,因为这种处理方式需要一次性把文件所有内容读取到内存中。1.4 方法四file_name = input("请输入你要打开的文件的完整路径及名称")file= open(file_name, "r") # 这里的file时文件句柄for line infile:# 处理每一行数据file.close()这种方式和方法三中的区别是分行读入,逐行处理,不会一次性把文件所有内容都读入到内存中,对一些大文件的处理是很有效的。2 文件写入文本操作文件写入有两种写入函数和一种辅助支持。write():向文件中写入一个字符或者字节流writelines():将一个元素全为字符串的列表写入到文件中 需要注意的是,writelines写入列表元素的时候会把列表元素的内容拼接到一起写入,不会有换行和空格 。seek(): 辅助写入函数offset偏移量参数代表含义如下0 – 文件开头1 – 当前位置2 – 文件结尾2.1 方法一file_name = input("output.txt", "w+")text= "hello world!"file_name.write(text)file.close()2.2 方法二file_name = input("output.txt", "w+")list= ["中午","早上","晚上"]file_name.writelines(list)for line infile:# 读取写入的数据,这时候发现是没有任何内容的file.close()我们增加一行代码就可以读取到写入的文件内容,利用seek()函数调整写操作指针的位置,可以实现写操作之后的正常读取。file_name = input("output.txt", "w+")list= ["中午","早上","晚上"]file_name.readlines(list)file_name.seek(0) # 调整写的指针到文件的开始位置for line infile:# 读取写入的数据,这时候会读出一行写入的数据。file.close()

Ⅷ Python文本处理工具都有哪些

1、 NLTK — Natural Language Toolkit

搞自然语言处理的同学应该没有人不知道NLTK吧,这儿也就不多说了。不过引荐两本书籍给刚刚触摸NLTK或许需求具体了解NLTK的同学: 一个是官方的《Natural Language Processing with Python》,以介绍NLTK里的功用用法为主,一起附带一些Python常识,一起国内陈涛同学友情翻译了一个中文版,这儿可以看到:引荐《用Python进行自然语言处理》中文翻译-NLTK配套书;另外一本是《Python Text Processing with NLTK 2.0 Cookbook》,这本书要深入一些,会涉及到NLTK的代码结构,一起会介绍怎么定制自己的语料和模型等,相当不错。

2、 Pattern

Pattern由比利时安特卫普大学CLiPS实验室出品,客观的说,Pattern不仅仅是一套文本处理东西,它更是一套web数据挖掘东西,囊括了数据抓取模块(包含Google, Twitter, 维基网络的API,以及爬虫和HTML剖析器),文本处理模块(词性标示,情感剖析等),机器学习模块(VSM, 聚类,SVM)以及可视化模块等,可以说,Pattern的这一整套逻辑也是这篇文章的组织逻辑,不过这儿我们暂时把Pattern放到文本处理部分。我个人首要使用的是它的英文处理模块Pattern.en, 有许多很不错的文本处理功用,包含基础的tokenize, 词性标示,语句切分,语法检查,拼写纠错,情感剖析,句法剖析等,相当不错。

3、 TextBlob: Simplified Text Processing

TextBlob是一个很有意思的Python文本处理东西包,它其实是根据上面两个Python东西包NLKT和Pattern做了封装(TextBlob stands on the giant shoulders of NLTK and pattern, and plays nicely with both),一起供给了许多文本处理功用的接口,包含词性标示,名词短语提取,情感剖析,文本分类,拼写检查等,甚至包含翻译和语言检测,不过这个是根据Google的API的,有调用次数约束。

4、 MBSP for Python

MBSP与Pattern同源,同出自比利时安特卫普大学CLiPS实验室,供给了Word Tokenization, 语句切分,词性标示,Chunking, Lemmatization,句法剖析等根本的文本处理功用,感兴趣的同学可以重视。

关于 Python文本处理工具都有哪些,环球青藤小编就和大家分享到这里了,学习是永无止境的,学习一项技能更是受益终身,所以,只要肯努力学,什么时候开始都不晚。如果您还想继续了解关于python编程的学习方法及素材等内容,可以点击本站其他文章学习。

Ⅸ Python批量修改文本文件内容的方法

Python批量修改文本文复件制内容的方法Python批量替换文件内容,支持嵌套文件夹 import ospath="./"for root,dirs,files in os.walk(path):for name in files:#print nameif name.endswith(".html"):#print root,dirs,name filename=root+"/"+namef=open(filename,"r")filecontent=""line=f.readline() while line:l=line.replace(":/arcgis_js_api","/arcgisapi")filecontent=filecontent+lline=f.readline()f.close()f=file(filename,"w")f.writelines(filecontent)f.close()关于本文给大家介绍的Python批量修改文本文件内容的方法