使用batch,python等自动编辑文本文件

时间:2013-05-31 15:02:31

标签: python text batch-file automation

我知道这是一个简单的修复,但似乎找不到答案:

我正在尝试创建一个批处理文件,该文件将每天从ftp服务器下载的文件夹中的所有文件合并到一个单独的文件夹中,然后根据文件列从组合文件中创建新文件(这是给我带来麻烦的部分。)

例如:

我们每天都会以这样的格式提供数据:

DATE/TIME  | NodeID | Data    
04/05/2013 11:23:11   |     2     |   10    
04/05/2013 11:23:11    |    3  |      10    
04/05/2013 11:23:11    |    4   |     10    
04/05/2013 11:23:11    |    5   |     10    
04/05/2013 11:23:11     |   6    |    10    
04/05/2013 11:23:11      |  7   |     10    
04/06/2013 11:24:12     |   1    |    12    
04/06/2013 11:24:12     |   1    |    12        
04/06/2013 11:24:12    |    4   |     12        
04/06/2013 11:24:12     |   1     |   12        
04/06/2013 11:24:12     |   3   |     12        
04/06/2013 11:24:12     |   2    |    12

我想要的是使用NodeID 1获取所有行并将它们放在一个单独的文件中,将NodeID 2的所有行放在一个单独的文件中等等......

我对python的知识非常有限,但我愿意在任何事情上做到这一点。

3 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL enabledelayedexpansion
DEL noderesult*.txt 2>nul
FOR /f "skip=1tokens=1,2*delims=|" %%i IN (logfile.txt) DO (
 SET node=%%j
 SET node=!node: =!
 >>noderesult!node!.txt ECHO(%%i^|%%j^|%%k
)

应该完成工作,产生noderesult?.txt - 小心 - DEL行删除所有现有的noderesult*.txt

答案 1 :(得分:0)

尝试以下方法:

f_in = "path_to_your_file"
f = open(f_in,'r')

f_out = {}

for l in f:
  if l != '\n':
    row = l.split('|')
    id = int(row[1])
    if id not in f_out:
      f_out[id] = open(f_in + "_" + str(id),'w')
    f_out[id].write(l)

答案 2 :(得分:0)

我没有测试过,但这可行:

with open('your/file') as file:
    line = file.readline()
    while line:
        rows = line.split('|')
        with open(rows[1].strip() + '.txt', 'a') as out:
            out.write(line)
        line = file.readline()