Python脚本找不到文件名

时间:2015-08-20 11:09:51

标签: python-2.7

以下简单脚本找不到我在当前目录中的文件名“We are one”。我在这里缺少什么?

非常感谢。

import re
import os

limit_type = re.compile('We are one|foo\.txt')

#Output should have 1 file named "We are one"
output = os.system("ls -1")

output = str(output).split()

for line in output:
    if limit_type.search(line, re.M|re.I):
        print "Found it %s" % range_type
        exit(0)

print "Not Found it!"

2 个答案:

答案 0 :(得分:1)

有几件事:

  • 使用r&#39;&#39;指定正则表达式,而不仅仅是&#39; <#39;
  • os.system返回程序的退出值。在您的情况下,这是0而不是程序输出。如果需要输出,请使用subprocess.Popen。
  • split()按空格分割,因此您可能会有一个列表,其中包含&#39;我们&#39;&#39;是&#39;和一个&#39;,但不是短语&#39;我们是一个&#39;。使用拆分(&#39; \ n&#39;)按换行符拆分
  • 在你的印刷品中你使用了不存在的变量range_type。

以下内容应该有效

import re
from subprocess import Popen, PIPE

limit_type = re.compile(r'We are one|foo\.txt')

# Run ls -1 and store stdout output
output = Popen(["ls", "-1"], stdout=PIPE).communicate()[0]
output = str(output).split('\n')
print output

for line in output:
    if limit_type.search(line):
        print "Found it: %s" % line
        exit(0)

print "Not Found it!"

答案 1 :(得分:0)

将正则表达式更改为re.compile(r'We are (:?(:?one)|(:?foo))\.txt')

打开括号后的:?表示该组未捕获。

正如jonrsharpe所提到的,最好使用glob模块,而不是将ls传递给os.system。但你可以自由地做你想做的事。