如何避免对同一文件执行操作的for循环重复?

时间:2018-12-05 13:32:27

标签: python loops for-loop

房子里的Python菜鸟(至今):

我正在逐行处理文件,例如:

   New-AzureRmContainerGroup -ResourceGroupName $resourceGroup `
                              -Name indexcontainer `
                              -Image $image `
                              -IpAddressType Public `
                              -Location $resourceGroupLocation `
                              -MemoryInGB 6 `
                              -Cpu 2 `
                              -Port 9200

主要问题是,如果找不到该文件,chmod可能会失败,然后,对我来说,剩下的第二条命令浪费时间。

将动作一分为二的最佳做法是什么(除了重复循环两次)。因此,我可以在给定列表上运行chmod,然后进行第二次迭代以执行shell脚本命令。

1 个答案:

答案 0 :(得分:1)

序言:

  • 请注意,os.system已过时,并且存在安全问题,尤其是在您的上下文中(如果其中一行包含"somefile; rm -rf /*"会怎样?)。您应该使用subprocess.call
  • 逐行从文件传递项目要求您rstrip或换行符在命令中,这将在100%的时间内失败...

现在,如果命令的返回码不为0(最后一条命令无关紧要),则可以使用continue跳过当前项:

with open ('data.txt','r') as f:
    for line in f:
        if subprocess.call(["/bin/chmod","-x",line.rstrip()])
           continue
        subprocess.call(["/usr/bin/clipass",line.rstrip()])
相关问题