如何在python中使用glob.glob从不同名称的多个输入文本文件写入多个输出文本文件?
我是python的初学者。我想用python从50个输入文本文件中编写50个输出文件。 例如,我输入了如下文本文件:如何在python中使用glob.glob从不同名称的多个输入文本文件写入多个输出文本文件?,python,Python,我是python的初学者。我想用python从50个输入文本文件中编写50个输出文件。 例如,我输入了如下文本文件: bottom_0cm_Box_0_B_90_wave_1.txt bottom_0cm_Box_45_B_135_wave_1.txt bottom_0cm_Box_90_B_180_wave_1.txt ... top_0cm_Box_0_B_90_wave_1.txt top_0cm_Box_45_B_135_wave_1.txt top_0cm_Box_90_B_180_w
bottom_0cm_Box_0_B_90_wave_1.txt
bottom_0cm_Box_45_B_135_wave_1.txt
bottom_0cm_Box_90_B_180_wave_1.txt
...
top_0cm_Box_0_B_90_wave_1.txt
top_0cm_Box_45_B_135_wave_1.txt
top_0cm_Box_90_B_180_wave_1.txt
...
在一个文件中,我有1000个事件,我必须对每个事件进行一些计算,所以我循环了所有1000个事件。
我有以下代码:
file = glob.glob("/position/*.txt")
print file
print len(file)
for f in file:
with open(f, 'rb') as input:
all_lines = [line for line in input]
x = np.arange(1,1025) #x value is common for all the events
Amplitude=list()
for j in range(1,1000):
y2 = np.array(all_lines[1032*j+8:1032*(j+1)],dtype=float)
x22 = list(x)
y2_=list(y2)
y22 = [((i / 4096)-0.5) for i in y2_]
min_y2 = min(y22) # Find the maximum y2 value
index_min_y2 = y22.index(min_y2) #index for minimum of y2
min_x2 = x[y22.index(min_y2)]
print 'minimum x2', min_x2, 'minimum y2', min_y2
Amplitude.append(round(min_y2, 2))
with open ('bottom_0cm_Box_0_B_90_amplitude.txt', 'w') as fo:
for d in Amplitude:
fo.write(str(d) + '\n')
我想写:
- 输入名为
bottom\u 0cm\u Box\u 0\u B\u 90\u振幅.txt的文本文件,输出文件
bottom\u 0cm\u Box\u 0\u B\u 90\u wave\u 1.txt
- 使用输出文件名的
输入文件名bottom_0cm_Box_45_B_135_振幅.txt
bottom_0cm_Box_45_B_135_wave_1.txt
依此类推。您可以将输入文件的名称拆分为基名称和扩展名,用不同的后缀替换基名称,将它们连接为全名,然后用新的目录名连接基名称以获得完整路径名 加: 然后改变:
with open ('bottom_0cm_Box_0_B_90_amplitude.txt', 'w') as fo:
致:
此外,您不需要将所有结果保存到amplification
列表中,因为您随后要做的就是将其转储到一个文件中。相反,您应该将要添加到振幅
的内容直接写入输出文件以节省内存:
import os.path
import glob
file = glob.glob("/position/*.txt")
print file
print len(file)
for f in file:
with open(f, 'rb') as input:
all_lines = [line for line in input]
x = np.arange(1,1025) #x value is common for all the events
basename, ext = os.path.splitext(os.path.basename(f))
basename = basename[:-len('wave_1')] + 'amplitude'
with open(os.path.join(new_dir, basename + ext), 'w') as fo:
for j in range(1,1000):
y2 = np.array(all_lines[1032*j+8:1032*(j+1)],dtype=float)
x22 = list(x)
y2_=list(y2)
y22 = [((i / 4096)-0.5) for i in y2_]
min_y2 = min(y22) # Find the maximum y2 value
index_min_y2 = y22.index(min_y2) #index for minimum of y2
min_x2 = x[y22.index(min_y2)]
print 'minimum x2', min_x2, 'minimum y2', min_y2
fo.write(str(round(min_y2, 2)) + '\n')
所以一切都必须是一样的…只是你想用振幅来代替波_1。。是吗?是的,每个文件都有不同的名称,我想把输入文件写成输出文件的对应关系。我的意思是,当我使用输入文件bottom_0cm_Box_0_B_90_wave_1.txt时,我想写一个名为bottom_0cm_Box_0_B_90_振幅.txt的输出文件,同样地,对于bottom_0cm_Box_45_B_135_wave_1.txt,我想使用glob.glob.glob.glob来输出文件bottom_0cm_Box_135_135_振幅.txt。谢谢@blhsing,如何使用此输出文本文件的不同路径?不客气。我已经更新了我的答案,为输出文件使用了一个新的目录名
new_dir
。我认为代码占用了大量内存,在运行3个文本文件后,我收到消息“Killed”。我已经更新了我的答案,并给出了如何保存内存的建议。不,同样的问题,“Killed”,没有列表或列表。
basename, ext = os.path.splitext(os.path.basename(f))
basename = basename[:-len('wave_1')] + 'amplitude'
with open (os.path.join(new_dir, basename + ext), 'w') as fo:
import os.path
import glob
file = glob.glob("/position/*.txt")
print file
print len(file)
for f in file:
with open(f, 'rb') as input:
all_lines = [line for line in input]
x = np.arange(1,1025) #x value is common for all the events
basename, ext = os.path.splitext(os.path.basename(f))
basename = basename[:-len('wave_1')] + 'amplitude'
with open(os.path.join(new_dir, basename + ext), 'w') as fo:
for j in range(1,1000):
y2 = np.array(all_lines[1032*j+8:1032*(j+1)],dtype=float)
x22 = list(x)
y2_=list(y2)
y22 = [((i / 4096)-0.5) for i in y2_]
min_y2 = min(y22) # Find the maximum y2 value
index_min_y2 = y22.index(min_y2) #index for minimum of y2
min_x2 = x[y22.index(min_y2)]
print 'minimum x2', min_x2, 'minimum y2', min_y2
fo.write(str(round(min_y2, 2)) + '\n')