从外部文件读入值,添加值,打印结果

2024-09-29 20:26:46 发布

您现在位置:Python中文网/ 问答频道 /正文

问题: 我有50个文本文件,每一个都有数千行文本,每一行都有一个值。我只对中间附近的一小部分感兴趣(第757-827行-实际上我感兴趣的是第745-805行,但每个文件的前12行是不相关的内容)。我想阅读中的每个文件。然后将这些行之间的值相加。最后,我希望它以((n+1)*18,total count)格式打印一对数字,其中n是文件的编号(因为它们从零开始编号)。然后对所有50个文件重复,给出50对数字,看起来像:

(18,77),(36,63),(54,50),(72,42),...

代码:

import numpy as np
%matplotlib inline
from numpy import loadtxt, linspace
import glob, os

fileToRun = 'Run0'
location = 'ControlRoom6'
DeadTime = 3
LiveTime = 15 

folderId = '\\'
baseFolder = 'C:'+folderId+'Users'+folderId+location+folderId+'Documents'+folderId+'PhD'+folderId+'Ubuntu-Analysis-DCF'+folderId+'DCF-an-b+decay'+folderId+'dcp-ap-27Al'+folderId+''
prefix = 'DECAY_COINC'

folderToAnalyze = baseFolder + fileToRun + '\\'
MaestroT = LiveTime + DeadTime

## Gets number of files
files = []
os.chdir(folderToAnalyze)
for file in glob.glob(prefix + "*.Spe"):
    files.append(file)
numfiles = len(files)
if numfiles<=1:
    print('numfiles is {0}, minimum of 2 is required'.format(numfiles))
    raise SystemExit(0)
    
    xmin = 745
    xmax = 815
    skips = 12
    
    n=[]
    count=[]
    
    for n in range(0, numfiles):
    
        x = np.linspace(0, 8191, 8192)
        finalprefix = str(n).zfill(3)
        fullprefix = folderToAnalyze + prefix + finalprefix
        y = loadtxt(fullprefix + ".Spe", skiprows = 12, max_rows = 8192) 
    
        
        for x in range(xmin+skips,xmax+skips):
            count = count + y
            time = MaestroT*(n+1)
            
            print(time, count)

电流输出为: 'ValueError回溯(最近一次调用上次) 在里面 84 85表示范围内的x(xmin+跳过,xmax+跳过): ---&燃气轮机;86计数=计数+y 87时间=大师*(n+1) 88

ValueError:操作数无法与形状(0,)(8192,)一起广播'

然而,我以前确实有这个running,它只是打印出数千个看似不相连的数字。有人知道我如何修改代码以获得期望的结果吗

编辑:数据集

为了使示例更易于使用,我制作了一个带有一些虚拟数据的dropbox。这些文件的名称与读取时的名称相同,并且以相同的格式写入(前12行包含无用信息)。链接是Here。我没有写8192个虚拟数字,因为我认为这可能会更容易,并且产生一个更接近的传真,只使用实际文件,并更改一些数字


Tags: 文件inimportforprefixcount数字files
1条回答
网友
1楼 · 发布于 2024-09-29 20:26:46

解决方案是编辑代码,如图所示,从'xmin=745'开始:

xmin = 745
xmax = 815
skip = 12

for n in range(0, numfiles):

    total = 0
    
    x = np.linspace(0, 8191, 8192)
    finalprefix = str(n).zfill(3)
    fullprefix = folderToAnalyze + prefix + finalprefix
    y = loadtxt(fullprefix + ".Spe", skiprows= xmin + skip, max_rows = xmax - xmin)

    
    for x in y:
        val = int(x)
        total = total + val
    
    print(((n+1)*MaestroT), total)

打印为

18 74

36 64

54 62

72 54

90 47

108 39

126 40

144 35

等等。 适合我的需要

相关问题 更多 >

    热门问题