房子里的Python菜鸟(至今):
我正在逐行处理文件,例如:
New-AzureRmContainerGroup -ResourceGroupName $resourceGroup `
-Name indexcontainer `
-Image $image `
-IpAddressType Public `
-Location $resourceGroupLocation `
-MemoryInGB 6 `
-Cpu 2 `
-Port 9200
主要问题是,如果找不到该文件,chmod可能会失败,然后,对我来说,剩下的第二条命令浪费时间。
将动作一分为二的最佳做法是什么(除了重复循环两次)。因此,我可以在给定列表上运行chmod,然后进行第二次迭代以执行shell脚本命令。
答案 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()])