[英]For loop to loop through files
我有下面的代碼,它的工作方式就像我想要的那樣。 我唯一要更改的是添加一個for循環。 請注意此行:
node = import_file("../Angle1/1eV/cascade.dump",multiple_frames = True)
注意其中的1eV。 我想從1到10eV循環。 我怎樣才能像這樣插入一個for循環從1到100 eV,這樣我就不必手動糾正它,這將需要一段時間。
# Import OVITO modules.
from ovito.io import *
from ovito.modifiers import *
# Import NumPy module.
import numpy
import sys
node = import_file("../Angle1/1eV/cascade.dump",multiple_frames = True)
ovito.dataset.anim.current_frame = 1
mod = WignerSeitzAnalysisModifier(per_type_occupancies = True)
mod.reference.load("position_perfect_300.dump")
node.modifiers.append(mod)
node.compute()
node.modifiers.append(SelectExpressionModifier(expression = 'ParticleType==1 && Occupancy.1==0 && Occupancy.2==0'))
node.compute()
f=open("1.out",'w')
sys.stdout = f
print("Number of O vacant sites: %i" % numpy.count_nonzero(node.output.particle_properties['Selection']))
f.close()
簡單:只需使循環像這樣開始,然后保持相同的縮進,包括最終的print
語句(我進行了更改,因此它不會覆蓋sys.stdout
,並且我在循環之前打開了文件,因此消息不會被覆蓋) :
with open("1.out",'w') as f:
for i in range(1,11):
node = import_file("../Angle1/{}eV/cascade.dump".format(i),multiple_frames = True)
ovito.dataset.anim.current_frame = 1
mod = WignerSeitzAnalysisModifier(per_type_occupancies = True)
mod.reference.load("position_perfect_300.dump")
node.modifiers.append(mod)
node.compute()
node.modifiers.append(SelectExpressionModifier(expression = 'ParticleType==1 && Occupancy.1==0 && Occupancy.2==0'))
node.compute()
f.write("Number of O vacant sites: %i\n" % numpy.count_nonzero(node.output.particle_properties['Selection']))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.