将函数应用于目录中的所有文件

2024-09-21 07:38:46 发布

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

我已经编写了一个用于数据处理的函数,需要将其应用于目录中的大量文件。在

当应用于单个文件时,该函数起作用。在

def getfwhm(x):    
    import numpy as np
    st=np.std(x[:,7])
    fwhm=2*np.sqrt(2*np.log(2))*st

    file=open('all_fwhm2.txt', 'at')

    file.write("fwhm = %.6f\n" % (fwhm))
    file.close()

    file=open('all_fwhm2.txt', 'rt')
    print file.read()
    file.close()

我现在想在更大范围内使用它。到目前为止,我已经写了这段代码

^{pr2}$

但是我得到了以下错误

File "fwhmfunction.py", line 11, in getfwhm
   st=np.std(x[:,7])

TypeError: list indices must be integers, not tuple

我用python编写spyder。在

谢谢你的帮助!在


Tags: 函数目录txtclosenpopenallfile
1条回答
网友
1楼 · 发布于 2024-09-21 07:38:46

根据unix的精神,您应该将程序分成两部分:

  1. 作用于给定文件的程序
  2. 将给定的脚本应用于给定的文件列表(glob或其他任何文件)的程序

下面是一个示例:

# name: script.py
import sys
File = sys.argv[1]
# do something here
print File

(最好使用argparse来解析参数,但我们使用argv来保持简单)

至于第二部分,已经有了一个优秀的unix工具:

^{pr2}$

这里有一个额外的好处:并行任务执行。在

如果您在windows上,则可以用python编写一些简单(顺序)的内容:

# name: apply_script_to_glob.py
import sys, os
from glob import glob

Script = sys.argv[1]
Glob   = sys.argv[2]

Files = glob(Glob)

for File in Files:
    os.system("python2.7 " + Script + " " + File)

(同样,我们没有使用argparse也没有检查任何东西来保持简单)。你可以用

$ python2.7 apply_script_to_glob.py "script.py" "*.txt"

相关问题 更多 >

    热门问题