簡體   English   中英

For循環遍歷文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM