首页 > 解决方案 > 如何将powershell脚本代码转换为python代码?

问题描述

如何将 Powershell 脚本中的 for 循环转换为 python 代码?

电源外壳脚本

 $result = Foreach ($row in $csv)
 {   $row   
 if ($row.Param_Name -eq "p_s3bucket_arn") { $row.Param_Value = $S3Bucketarn }
 }

蟒蛇代码:

   with open('C:/test.csv') as csvfile:
   readCSV = csv.reader(csvfile, delimiter=',')
   for row in readCSV:
      if(row[0]=='p_instance_count'):
        row[1]=len(instance_count)   # expecting to write in csv file as p_instance_count,10
        

执行 Python 代码时出错:

如果(行[0]=='p_instance_count'):

IndexError:列表索引超出范围

CSV

Param_Name,Param_Value
p_instance_count,
p_tag_name,tag123

标签: pythonpowershell

解决方案


看起来你需要。

data = []
with open('C:/test.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    next(readCSV)   #skip header
    for row in readCSV:
        if row[0]=='p_instance_count':
            data.append((row[0], len(instance_count)))   
        else:
            data.append((row[0], ""))

with open('C:/test.csv', "w") as csvfile:
    writer = csv.writer(csvfile, delimiter=',')
    for row in data:
        writer.writerow(row)

使用csv.DictReader

前任:

data = []
with open('C:/test.csv') as csvfile:
    readCSV = csv.DictReader(csvfile, delimiter=',')
    for row in readCSV:
        if row["Param_Name"]=='p_instance_count':
            data.append((row["Param_Name"], len("instance_count")))   
        else:
            data.append((row["Param_Name"], ""))

推荐阅读