【问题标题】:Writing values after for loop in csv file在 csv 文件中的 for 循环后写入值
【发布时间】:2025-12-28 05:10:12
【问题描述】:

我有以下代码:

from math import *
from scipy.special import *
import matplotlib.pyplot as plt
import csv


## Definition der Parameter für Druckgleichung nach Rudnicki (1986) ##
q = 6.0/1000                                   # Fluidmenge pro Fläche und Zeit [l/s]
rhof = 1000                                     # Dichte Flüssigkeit [kg/m³]
lameu = 11.2*10**9                              # Lamé-Parameter, undrained [Pa]
lame = 8.4*10**9                                # Lamé-Parameter, drained [Pa]
pi                                              # durch Pythonmodul "math" gegeben
alpha = 0.65                                    # Biot-Willis-Koeffizient
G = 8.4*10**9                                   # Schermodul [Pa]
k = 1.0e-15                                     # Permeabilität [m²] bzw. [Darcy] 
eta = 0.001                                     # Viskosität des Fluids [Pa*s]            
t = 1000*24*3600                                # Zeit in [s]

## Beziehungen der Parameter untereinander ##
kappa = k/eta                                                   # Berechnung der Permeabilität nach Rudnicki (1986), [m³*s/kg]
print "kappa ist:",kappa                                        # Ausgabe Permabilität
c = (kappa*(lameu-lame)*(lame+2*G))/((alpha**2)*(lameu+2*G))    # Berechnung der Diffusivität
print "c ist:",c                                                # Ausgabe der Diffusivität

## Bereiche der Achsen in [m] ##
#def drange(start, stop, step):
#    r = start
#    while r <= stop:
#            yield r
#            r += step    
xmin = 1
xmax = 20
ymin = 1
ymax = 20

## Druckberechnung um Bohrung ##
for x in range (xmin,xmax,1):
    for y in range (ymin,ymax,1):
            r = sqrt(x**2+y**2)
            P = (q/(rhof*4*pi*kappa))*(expn(1,r**2/(4*c*t)))
            z = P/1e6
            #print x, "  ", y, "  ", z

对于我的输出,我想将 x、y 和 z 的值写入 csv 文件。它应该看起来像例如单行中的单元格中的每个 x 值和同一列中单元格中的每个 y 值,以便可以为每个 x/y 组合显示一个 z 值。它应该是这样的:

   x    x1        ...

y z(x,y) z(x1,y) ...

y1 z(x,y1) z(x1,y1) ...

... ... ...

我是 csv 模块的新手,并没有真正习惯它,尤其是如何在正确的位置设置值以及何时使用它(例如,在循环内部或之后)。这可能吗?还是只能看起来像这样(类似于我的注释打印):

x y z(x,y)

x y1 z(x,y1)

x y2 z(x,y2) ... ...

很抱歉这种奇怪而丑陋的格式,但我想你明白我的想法:)

任何帮助都将 - 一如既往 - 非常感谢!

【问题讨论】:

  • 什么是'scv'模块,什么是pi变量?它似乎没有初始化。
  • 抱歉,Marcin,我忘了纠正这两个问题。感谢您的提示!

标签: python csv for-loop export-to-excel export-to-csv


【解决方案1】:

使用 csv 模块,您通常必须一次写入整行。我相信这段代码(替换你的最终 for 循环)会打印出你想要的输出:

def your_function(x,y):
            r = sqrt(x**2+y**2)
            P = (q/(rhof*4*pi*kappa))*(expn(1,r**2/(4*c*t)))
            z = P/1e6

x_range = range(xmin,xmax,1)
y_range = range(ymin,ymax,1)

print(x_range)
for y in y_range:
    this_row = [y] + [your_function(x,y) for x in x_range]
    print(this_row)

如果这样做符合您的要求,那么将打印功能替换为写入 CSV 应该很简单。

【讨论】: