我玩re模块和我有结果我无法解释的差异。Python代码有不同的结果,当代码放置在脚本
我有一个包含下列文字
的Sybase Adaptive Server Enterprise系统性能报告
服务器版本的输入文件:Adaptive Server Enterprise中/ 15.7.0/EBF 22639 SMP SP52/P/ Sun_svr4/OS 5.10/ase157sp5x /64分之3293位/ FBO /周三5月21日0 2点49分14秒2014
运行日期:2017年3月24日
采样开始时间:2017年3月24日12时16分01秒
取样收于:2017年3月24日12时31分01秒
采样间隔:00:15:00
采样模式:没有安全
计数器最后一次清除:2017年3月21日14点49分21秒
服务器名称:SYB01
我有,我想开始与线下的Python代码“运行日期:”(后来我想提取的行块,但让我们按部就班)
import re
filename = 'D:/sp_sysmon/sp_sysmon_SYB01_170324_121544.txt'
file_r = open(filename,'r')
file_content = file_r.read()
print (file_content)
pattern_date = re.compile(r"Run Date:", re.MULTILINE)
bingo = pattern_date.search(file_content)
bingo.group()
如果我执行此代码直接在Python控制台我有以下
C:\Users\simon>python
Python 3.6.0 |Anaconda 4.3.1 (64-bit)| (default, Dec 23 2016, 11:57:41) [MSC >v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>>
>>> filename = 'D:/sp_sysmon/sp_sysmon_SYB01_170324_121544.txt'
>>>
>>> file_r = open(filename,'r')
>>> file_content = file_r.read()
>>> print (file_content)
Sybase Adaptive Server Enterprise System Performance Report
Server Version: Adaptive Server Enterprise/15.7.0/EBF 22639 SMP SP52 /P/
Sun_svr4/OS 5.10/ase157sp5x/3293/64-bit/FBO/Wed May 21 0
2:49:14 2014
Run Date: Mar 24, 2017
Sampling Started at: Mar 24, 2017 12:16:01
Sampling Ended at: Mar 24, 2017 12:31:01
Sample Interval: 00:15:00
Sample Mode: No Clear
Counters Last Cleared: Mar 21, 2017 14:49:21
Server Name: SYB01
>>>
>>> pattern_date = re.compile(r"Run Date:", re.MULTILINE)
>>> bingo = pattern_date.search(file_content)
>>> bingo.group()
'Run Date:'
>>>
这是输出我希望
现在如果复制这个代码在script.py文件并执行它,我有一个不同的结果,其中调用bingo.group()不显示任何
D:\Perso\My_code\python>python script.py
Sybase Adaptive Server Enterprise System Performance Report
Server Version: Adaptive Server Enterprise/15.7.0/EBF 22639 SMP SP52 /P/
Sun_svr4/OS 5.10/ase157sp5x/3293/64-bit/FBO/Wed May 21 0
2:49:14 2014
Run Date: Mar 24, 2017
Sampling Started at: Mar 24, 2017 12:16:01
Sampling Ended at: Mar 24, 2017 12:31:01
Sample Interval: 00:15:00
Sample Mode: No Clear
Counters Last Cleared: Mar 21, 2017 14:49:21
Server Name: SYB01 D:\Perso\My_code\python>
是否有人有这种差异的ID?
这是因为REPL是_interactive_。如果你输入一个表达式,REPL将回显结果。如果您是从然而脚本运行的代码,你必须明确地打印()'bingo.group的'值:'打印(bingo.group())'。 –
Python交互式shell实现REPL,它代表Read,Evaluate和Print Loop。在脚本中,在另一方面,你必须调用'输入()'或'sys.stdin.readline()'读取输入的一行和'打印()'或'sys.stdout.write函数()'写出输出。 – eryksun