Python 为多个具有相同扩展名的文件运行脚本并将结果写入文本文件
我正在尝试编写一个脚本,从扩展名为“.tp6”的目录中的多个文件中提取数据,然后将所有数据写入单个文本文件 它能够正确地从每个文件中获取数据并将其打印到终端,但我无法将每个数据点“传递”到另一个将其写入文本文件的函数 有什么想法吗?谢谢大家!Python 为多个具有相同扩展名的文件运行脚本并将结果写入文本文件,python,python-2.7,glob,Python,Python 2.7,Glob,我正在尝试编写一个脚本,从扩展名为“.tp6”的目录中的多个文件中提取数据,然后将所有数据写入单个文本文件 它能够正确地从每个文件中获取数据并将其打印到终端,但我无法将每个数据点“传递”到另一个将其写入文本文件的函数 有什么想法吗?谢谢大家! import glob import os import Tkinter import tkFileDialog root = Tkinter.Tk() root.withdraw() dir_path = tkFileDialog.askdirecto
import glob
import os
import Tkinter
import tkFileDialog
root = Tkinter.Tk()
root.withdraw()
dir_path = tkFileDialog.askdirectory()
os.chdir(dir_path)
def main():
for file_path in glob.glob('*.tp6'):
uncovext(file_path)
def main2():
for file_path in glob.glob('*.tp6'):
totext(uncovext)
#find and print data from each .tp6 file - this part works correctly
def uncovext(file_path):
for line in open(file_path):
if line.startswith(' UNCONVOLVED INTEGRATED RADIANCE'):
text = line[36:47]
number = float(text) * 10000
print('%.3f' % number)
def totext(uncovext):
with open("output.txt", "a") as f:
f.write(uncovext)
f.close()
if __name__ == '__main__':
main()
main2()
我认为这是一个命名问题:例如,如果您将totext函数的输入参数更改为p_uncovext,它应该可以工作。您还需要调用函数以在循环中显示文本
import glob
import os
import Tkinter
import tkFileDialog
root = Tkinter.Tk()
root.withdraw()
dir_path = tkFileDialog.askdirectory()
os.chdir(dir_path)
def main():
for file_path in glob.glob('*.tp6'):
uncovext(file_path)
#find and print data from each .tp6 file - this part works correctly
def uncovext(file_path):
for line in open(file_path):
if line.startswith(' UNCONVOLVED INTEGRATED RADIANCE'):
text = line[36:47]
number = float(text) * 10000
totext('%.3f' % number)
def totext(p_uncovext):
with open("output.txt", "a") as f:
f.write(p_uncovext)
f.close()
if __name__ == '__main__':
main()
你有几个问题。首先
uncovext
不会保存它从输入文件解析的数据。打印到屏幕上后,它就被扔掉了。您可以将其收集到一个列表中,然后返回以供进一步处理。然后,在第二个函数中调用writer,而main
无法让main2
知道数据是什么
一个简单的解决方法是使用单个函数调用uncovext
,并使用其结果调用totext
import glob
import os
import Tkinter
import tkFileDialog
root = Tkinter.Tk()
root.withdraw()
dir_path = tkFileDialog.askdirectory()
os.chdir(dir_path)
def main():
for file_path in glob.glob('*.tp6'):
totext(uncovext(file_path))
#find and print data from each .tp6 file - this part works correctly
def uncovext(file_path):
output = []
for line in open(file_path):
if line.startswith(' UNCONVOLVED INTEGRATED RADIANCE'):
text = line[36:47]
number = float(text) * 10000
output.append('%.3f\n' % number)
return output
def totext(uncovext):
with open("output.txt", "a") as f:
f.writelines(uncovext)
if __name__ == '__main__':
main()
您还可以将解析器重写为生成器,并编写代码,我发现这些代码更容易解释(不过,这只是我自己…)
def main():
with open('output.txt', 'a') as f:
for file_path in glob.glob('*.tp6'):
f.writelines(uncovext(file_path))
#find and print data from each .tp6 file - this part works correctly
def uncovext(file_path):
for line in open(file_path):
if line.startswith(' UNCONVOLVED INTEGRATED RADIANCE'):
text = line[36:47]
number = float(text) * 10000
yield '%.3f\n' % number