Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python从文件中提取信息_Python - Fatal编程技术网

Python从文件中提取信息

Python从文件中提取信息,python,Python,我有一个文本文件,扩展名为*.AAA,包含不同服务器上所有文件的大小。我想从每个大于20 GB的服务器中提取文件名+大小。我知道如何从文件中提取一行并显示它,但下面是我的示例以及我想要实现的目标 文件本身的示例如下: Pad 1001 驱动器\\192.168.0.101\c$中的卷没有标签。 卷序列号为XXXX-XXXX \\192.168.0.101\c$\TESTUSER的目录\ 2016年11月2日02:07 AM 894889984文件1.AAA 2015年5月25日07:18 AM

我有一个文本文件,扩展名为*.AAA,包含不同服务器上所有文件的大小。我想从每个大于20 GB的服务器中提取文件名+大小。我知道如何从文件中提取一行并显示它,但下面是我的示例以及我想要实现的目标

文件本身的示例如下:

Pad 1001
驱动器\\192.168.0.101\c$中的卷没有标签。
卷序列号为XXXX-XXXX
\\192.168.0.101\c$\TESTUSER的目录\
2016年11月2日02:07 AM 894889984文件1.AAA
2015年5月25日07:18 AM 25673969664文件2.AAA
2016年11月2日02:07 AM 17879040文件3.AAA
2015年5月25日上午7:18 12386304文件4.AAA
2008年10月13日上午10:29 1186988032文件3.AAA_oct13
2016年2月15日上午11:15 2799263744文件5.AAA
6个文件30585376768字节
0个目录(s)28585127936个可用字节
垫1002
驱动器\\192.168.0.101\c$中的卷没有标签。
卷序列号为XXXX-XXXX
\\192.168.0.101\c$\TESTUSER的目录\
2016年11月2日02:08 AM 1379815424文件1.AAA
2016年11月2日02:08 AM 18542592文件3.AAA
2016年2月15日12:41上午853659648文件5.AAA
3个文件225017664字节
0个目录49306902528个可用字节
以下是我希望作为输出的Pad#和大于20GB的文件:

Pad 1001 05/25/2015 07:18 AM 25673969664 File2.AAA
我最终会把它放在excel电子表格中,但我知道怎么做

有什么想法吗


谢谢您

以下内容将帮助您开始:

import re

output = []

with open('input.txt') as f_input:
    text = f_input.read()

for pad, block in re.findall(r'(Pad \d+)(.*?)(?=Pad|\Z)', text, re.M + re.S):
    file_list = re.findall(r'^(.*? +([0-9,]+) +.*?\.AAA\w*?)$', block, re.M)

    for line, length in file_list:
        length = int(length.replace(',', ''))

        if length > 2e10:       # Or your choice of what 20GB is
            output.append((pad, line))

print output
这将显示一个包含一个元组条目的列表,如下所示:

[('Pad 1001', '05/25/2015  07:18 AM    25,673,969,664 File2.AAA')]

[编辑]以下是我的方法:

import re

result = []
with open('txtfile.txt', 'r') as f:
    content = [line.strip() for line in f.readlines()]
for line in content:
    m = re.findall('\d{2}/\d{2}/\d{4}\s+\d{2}:\d{2}\s+(A|P)M\s+([0-9,]+)\s+((?!.AAA).)*.AAA((?!.AAA).)*', line)
    if line.startswith('Pad') or m and int(m[0][1].replace(',','')) > 20 * 1024 ** 3:
        result.append(line)
print  re.sub('Pad\s+\d+$', '', ' '.join(result))
输出为:

Pad 1001 05/25/2015  07:18 AM    25,673,969,664 File2.AAA 

你试过什么吗?它有用吗?