【发布时间】:2019-10-09 14:12:11
【问题描述】:
我需要为 DoE 研究编辑某个文件。文件格式为:
1 Wall1
roughness 0.0
velocity 0.0
temperature "temperature.file"
########
2 Wall2
roughness 0.0
velocity 0.0
temperature "temperature.file"
########
3 Wall3
roughness 0.0
velocity 0.0
temperature "temperature.file"
########
4 Wall4
roughness 0.0
velocity 0.0
temperature 34.1
########
5 Roof
roughness 0.0
velocity 0.0
temperature "temperature.file"
########
对于美国能源部,我想为每种情况更改一个或多个“temperature.file”条目(这是一个区域的空间变化温度场)。例如,案例 2 会将 Wall2 的温度文件更改为“temperature2.file”。然后程序将知道找到新文件而不是原始文件。
我已经建立了嵌套的 for 循环,但在文件 I/O 方面遇到了困难。我现在的代码是:
if m == 2:
with open(newfolder2+'/walls.in','r') as file:
filedata = file.readlines()
for line in filedata:
if 'Wall2' in line:
for line in filedata:
if 'temperature' in line:
print line
line = line.replace('temperature.file','temperature2.file')
print line
break
# file.seek(0)
with open(newfolder2+'/walls.in','w') as file:
file.writelines(filedata)
所以本质上我想找到“Wall2”出现的行,然后在 Wall2 之后查找带有温度的行,然后将其更改,并且只有该行的“temperature.file”字符串为“temperature2.file”。然后退出文件,然后写入文件,从而为特定情况创建新的输入文件。
我的第一行打印出原始行,第二个打印行代码也正确打印出更改后的行。但是,文件数据似乎没有成功写回文件。
似乎出了什么问题?
我认为另一种方法是使用 file.seek() 选项,而不是使用所有嵌套循环来查找特定行。 wall.in 文件的行和总长度将保持不变,因此我可以直接转到该特定行来更改“temperature.in”字符串。这是更好的方法吗?我从来没有试过这个,所以一些示例代码将不胜感激。
非常感谢大家!
【问题讨论】:
-
你永远不会改变
filedata...
标签: python string python-2.7 replace io