非常简单的问题(可能),但我想因为我对python的新手我不太确定os.system是如何工作的。
基本上我有一个for循环(感谢SO的一些帮助)遍历我的所有目录并运行一个shell脚本(比如120个不同的shell脚本)。
import os
root = '/foo/'
for directory, subdirectories, files in os.walk(root):
for file in files:
if os.path.splitext(file)[-1].lower() == '.sh':
基本上我想做的就是这个(如果它是在unix中)(忽略IP地址,但每次都会有一个IP地址) sh run.sh 157.111.22.134>> LOGFILE.TXT 然后 sh remove.sh 157.111.22.134
我试过这样的事情
#!/usr/bin/env python
import os
root = "~/users/me"
ip = '157.111.22.134'
for directory, subdirectories, files in os.walk(root):
for file in files:
if os.path.splitext(file)[-1].lower() == '.sh':
os.system('sh ' + os.path.join(directory, file) + ' ' + ip + '>>' ' log.txt')
os.system('sh ' + 'remove.sh ' + ip)
但它抱怨第二个os.system(说“意外缩进”)
我甚至不确定我是否正确?想法?
答案 0 :(得分:4)
你正在混淆缩进(空格与制表符)。使用python -tt
进行验证。