在循环中使用find()

时间:2016-11-30 01:51:17

标签: python loops find

我的脚本的目标是将netstart -a的结果打印到名为currservices.txt的文件中,然后查找其中包含单词Network或Diagnostic的服务。我创建了循环以列出所有已启动的服务,但不太了解如何在循环内使用find()函数来打印出具有网络或诊断功能的服务。

import os 
my_command = "net start >I:\\temp\\mypythonfiles\\currservices.txt" 
os.system(my_command) 
value = "Network Diagnostic" 
my_path = "I:\\temp\\mypythonfiles\\currservices.txt" 
my_handle = open(my_path, "r") 
for line_of_text in my_handle: 
    print (line_of_text) 
    find_val = value.find("Network ") 
    print(find_val)
    my_handle.close()
  1. 使用os模块执行“net start”,同时重定向到名为c:\ temp \ mypythonfiles \ currservices.txt
  2. 的文件
  3. 打开新创建的文件以供阅读
  4. 创建一个循环来读取文件中的每一行;循环内:  *使用find()方法检查每一行,列出与以下内容相关的所有已启动服务:Network,Diagnostic  *找到后,打印服务名称

1 个答案:

答案 0 :(得分:1)

首先,我认为您不需要在文件中写入,而是使用subprocess.check_output:

import subprocess
# create and execute a subprocess and write its output into output (string) 
output = subprocess.check_output(["net", "start"])

然后我确定正则表达式可以解决这个问题:

import re
regex = re.compile("Network|Diagnostic")
# split output (a raw multiline text) so you can iterate over lines
for p in output.splitlines():
    # test regex over current line
    if regex.match(p):
        print(p)