家清 发表于 2018-12-6 23:57

合并同一文件夹所有子文件

本帖最后由 家清 于 2018-12-8 14:08 编辑

有时候要合并抓包的日志的时候很麻烦,百度了很久也没找到合适的。只好自己写了,新手,新手,写的不好。



import os
import datetime
l=[]
docList = os.listdir(r'C:\Users\Administrator\Desktop\text')#特定目录下的文件存入列表
docList.sort()   # 显示当前文件夹下所有文件并进行排序

for i in docList:
    print(i)
    ls=open(r'C:\Users\Administrator\Desktop\text\\'+i,'r',encoding='utf-8')
   
    ls.close
   
    for ii in ls:
            ifnot ii inl:
                print(ii.find("\n"))
                if ii.find("\n") > -1 :
                     l.append(ii)
                  
                else:
                     l.append(ii+"\n\r")
      
                print(ii)
   
str1=''.join(l)
fr=open(r'C:\Users\Administrator\Desktop\text\qq.txt','a',encoding='utf-8')
fr.write(str1)
fr.close()



qxzzxw 发表于 2018-12-7 22:58

家清 发表于 2018-12-7 21:01
每行都读取并判断只是为了去除重复的内容,因为我这是合并qq账号,重复的qq账号对我没用

哦哦,你每一行都是QQ账号啊,你可以用pandas包读取txt,然后dataframe append,之后dataframe对列数据去重,存为txt即可,因为pandas底层是C语言等实现的,快很多,当然看你的数据量好像也不是很大,不一定需要用到。我最近对个股数据弄多次项经常用pandas(因为python效率太慢,按行遍历跑得跑个几个月,cpu只能占到40%)

家清 发表于 2018-12-7 20:58

吾爱支持 发表于 2018-12-7 07:33
臆断下楼主的意思,是不是把一个文件夹下所有子文件合到一个文件夹下,
如果这样是不是应该有个路径输入, ...

这个只是合并一个目录下面的所有文件,不适有子文件夹的

qxzzxw 发表于 2018-12-7 00:55

应该有现成的package,每个txt都每行解析如果大的话会比较慢吧?

kizzlepc 发表于 2018-12-7 01:54

第一次for循环的文件对象这么早就关闭了,第二个for循环还能使用文件对象吗?

mb181 发表于 2018-12-7 07:19

第二个for循环还能使用文件对象吗

Koreyoshi艺 发表于 2018-12-7 07:21

不错,谢谢分享

吾爱支持 发表于 2018-12-7 07:33

臆断下楼主的意思,是不是把一个文件夹下所有子文件合到一个文件夹下,
如果这样是不是应该有个路径输入,想合并哪个就输入哪个……

哪里理解的不对请楼主指点……

kk1212 发表于 2018-12-7 08:34

python真是全能啊   

家清 发表于 2018-12-7 20:59

mb181 发表于 2018-12-7 07:19
第二个for循环还能使用文件对象吗

第二个for是循环打开目录下面的文件并读取内容

家清 发表于 2018-12-7 21:00

kizzlepc 发表于 2018-12-7 01:54
第一次for循环的文件对象这么早就关闭了,第二个for循环还能使用文件对象吗?

只是读取文件内容到临时变量而已,没有用文件对象
页: [1] 2
查看完整版本: 合并同一文件夹所有子文件