[python]MergeTxt按列合并同一个文件下多个txt文件
开发需求:应项目需要,要将记录成txt的实验数据进行按列合并(也即为不同文件上下合并),从而进行机器学习训练.
实验数据类似如此
模拟验证数据
1.txt
*****1*****
abcdefghijklmn
opqrstuvwxyz
hhhhhhhhhhhhhhhhhhh
2.txt
*****2*****
12345678910
11121314151
123456897897
1231564564879
2132564644561
3.txt
*****3*****
wkhdwadadfa
wdawadwfafa
fggfwgwgqws
sssssssssss
4.txt
*****4*****
wdawadwfafa
fggfwgwgqws
sssssssssss
wkhdwadadfa
运行结果
最终结果
# -*- coding:utf-8*-
import sys
import os
import os.path
import time
time_start = time.time()
'''
“a” 以“追加”模式打开, (从 EOF 开始, 必要时创建新文件)
“a+” 以”读写”模式打开
“ab” 以”二进制 追加”模式打开
“ab+” 以”二进制 读写”模式打开
“w” 以”写”的方式打开
“w+” 以“读写”模式打开
“wb” 以“二进制 写”模式打开
“wb+” 以“二进制 读写”模式打开
“r+” 以”读写”模式打开
“rb” 以”二进制 读”模式打开
“rb+” 以”二进制 读写”模式打开
rU 或 Ua 以”读”方式打开, 同时提供通用换行符支持 (PEP 278)
1、使用“w”模式。文件若存在,首先要清空,然后重新创建
2、使用“a”模式。把所有要写入文件的数据都追加到文件的末尾,即使你使用了seek()指向文件的其他地方,如果文件不存在,将自动被创建。
3、f.read([size]) :size未指定则返回整个文件,如果文件大小>2倍内存则有问题。f.read()读到文件尾时返回”“(空字串)
4、file.readline() 返回一行
5、file.readline([size]) 返回包含size行的列表,size 未指定则返回全部行
6、”for line in f: print line” #通过迭代器访问
7、f.write(“hello\n”) #如果要写入字符串以外的数据,先将他转换为字符串.
8、f.tell() 返回一个整数,表示当前文件指针的位置(就是到文件头的比特数).
9、f.seek(偏移量,[起始位置]) : 用来移动文件指针
偏移量 : 单位“比特”,可正可负
起始位置 : 0 -文件头, 默认值; 1 -当前位置; 2 -文件尾
10、f.close() 关闭文件
'''
# 合并同一个文件夹下多个txt#
def MergeTxt(filepath='', outfile='', rmode='', ntag=False):
'''
@param filepath: 合并的文件目录
@param outfile: 合并输出文件目录
@param rmode: 读写模式
@param ntag: 是否换行标记
'''
print('merge start')
# open(path, ‘-模式 -‘, encoding =’UTF - 8’)
k = open(filepath + outfile, rmode)
for parent, dirnames, filenames in os.walk(filepath):
# 需针对当前文件做升序排序,否则按照os.walk的规则,遍历列表是乱序的
filenames.sort(key=None, reverse=False)
for filepath in filenames:
# filepath 即为遍历目录列表中当前文件路径
# txtpath 即为所有文件夹的路径
txtPath = os.path.join(parent, filepath)
print('open file:', filepath)
f = open(txtPath)
if (ntag):
k.write(f.read() + "\n")
else:
k.write(f.read())
k.close()
print('finished')
# 合并同一个文件夹下多个txt#
def MergeTxt_range(filepath='', outfile='', rmode='', ntag=False, range_start = 1, range_end = 31):
'''
@param filepath: 合并的文件目录
@param outfile: 合并输出文件目录
@param rmode: 读写模式
@param ntag: 是否换行标记
'''
print('merge start')
# open(path, ‘-模式 -‘, encoding =’UTF - 8’)
k = open(filepath + outfile, rmode)
for num in range(range_start, range_end):
txtPath = filepath + str(num) + '.txt'
print('txtpath', txtPath)
f = open(txtPath)
if (ntag):
k.write(f.read() + "\n")
else:
k.write(f.read())
k.close()
print('finished')
if __name__ == '__main__':
filepath = "/home/leoxae/PycharmProjects/Test/trainData/dragging/dragging_gz_train/"
outfile = "dragging_gz_train.txt"
rmode = 'a+'
ntag = True
MergeTxt_range(filepath, outfile, rmode, ntag,11,31)
time_end = time.time()
print(u'总共耗时:' + str(time_end - time_start) + 's')
[python]MergeTxt按列合并同一个文件下多个txt文件的更多相关文章
- python 检索一个目录下所有的txt文件,并把文件改为.log
检索一个目录及子目录下所有的txt文件,并把txt文件后缀改为log: import os f_path = r'C:\Users\PycharmProjects\mystudy\Testfolder ...
- python实现将文件夹内所有txt文件合并成一个文件
新建一个文件夹命名为yuliao,把所有txt文件放进去就ok啦!注意路径中‘/’,windows下路径不是这样. #coding=utf-8 import os #获取目标文件夹的路径 filed ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
- 读取同一文件夹下多个txt文件中的特定内容并做统计
读取同一文件夹下多个txt文件中的特定内容并做统计 有网友在问,C#读取同一文件夹下多个txt文件中的特定内容,并把各个文本的数据做统计. 昨晚Insus.NET抽上些少时间,来实现此问题,加强自身的 ...
- java算法面试题:编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。
package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...
- Java关于条件判断练习--统计一个src文件下的所有.java文件内的代码行数(注释行、空白行不统计在内)
要求:统计一个src文件下的所有.java文件内的代码行数(注释行.空白行不统计在内) 分析:先封装一个静态方法用于统计确定的.java文件的有效代码行数.使用字符缓冲流读取文件,首先判断是否是块注释 ...
- php 获取文件下的所有文件。php 获取文件下的所有子文件。php 递归获取文件下的所有文件。封装好的方法
//php 获取文件下的所有文件.php 获取文件下的所有子文件.php 递归获取文件下的所有文件.直接上封装好的php代码 <?php //文件路径 $dir = dirname(__FILE ...
- Java以流的方式将指定文件夹里的.txt文件全部复制到另一文件夹,并删除原文件夹中所有.txt文件
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- 4.产生10个1-100的随机数,并放到一个数组中 (1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。 (2)把数组中的数字放到当前文件夹的numArr.txt文件中
package cn.it.text; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayLis ...
随机推荐
- day04 orm操作
day04 orm操作 昨日内容回顾 小白必会三板斧 request对象方法 静态文件 请求方式 python链接数据库 django链接数据库 小白必会三板斧 HttpResponse :返回前端浏 ...
- Python计算期权隐含波动率
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. Black-Scholes 将期权价格描述为标的价格.行权价.无风险利率.到期时间和波动性的函数. V ...
- Maven打包及场景
场景一 对当前项目打包并指定主类. <build> <plugins> <plugin> <artifactId>maven-compiler-plug ...
- Hive(十一)【压缩、存储】
目录 一.Hadoop的压缩配置 1.MR支持的压缩编码 2.压缩参数配置 3.开启Mapper输出阶段压缩 4.开启Reduceer输出阶段 二.文件存储 1.列式存储和行式存储 2.TextFil ...
- 快速挂起VIM以及调出被挂起的VIM的方法
vim中开了多窗口后有时需要临时切出去执行shell指令,查看结果,在vim中用%很不方便查看结果,要切出去又要逐个小窗口:q,非常麻烦. 上网一查竟然有挂起的方法: 挂起:ctrl-z 调出:fg ...
- Linux系统根目录下各文件夹介绍
参考自:[1]Linux 系统根目录下各个文件夹的作用 https://www.cnblogs.com/jiangfeilong/p/10538795.html[2]了解Linux根目录"/ ...
- Cocoapods 版本更新与更新到指定版本
1.本地现有的Cocoapods的版本号是1.1.0.rc.2,想升级到最新版本 1.先切换gem源 gem sources --remove https://rubygems.org/ gem so ...
- Undefined symbols for architecture arm64:问题
Undefined symbols for architecture arm64: "_sqlite3_prepare_v2", referenced from: +[HMJSch ...
- NSMutableArray-->NSString
1.如何把NSMutableArray 转化为NSString//用字符将NSArray中的元素拼接起来 NSArray *array = [NSArray arrayWithObjects:@&qu ...
- Java动态脚本Groovy,高级啊!
前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 简介: Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚 ...