Python 如何在批处理输出中删除下线转义字符
我有一个Python脚本,它在.bat文件目录中循环。对于每个文件,它运行其批处理脚本,然后将输出与包含文件输出内容的已保存文件进行比较,以测试.bat是否正确。现在我正在测试它,我把它作为一个测试文件:Python 如何在批处理输出中删除下线转义字符,python,batch-file,Python,Batch File,我有一个Python脚本,它在.bat文件目录中循环。对于每个文件,它运行其批处理脚本,然后将输出与包含文件输出内容的已保存文件进行比较,以测试.bat是否正确。现在我正在测试它,我把它作为一个测试文件: @echo off echo Good morning world and all who inhabit it! :D 然后,我的“解决方案”文件如下所示: Good morning world and all who inhabit it! :D 这是检查文件的代码: for _, _
@echo off
echo Good morning world and all who inhabit it! :D
然后,我的“解决方案”文件如下所示:
Good morning world and all who inhabit it! :D
这是检查文件的代码:
for _, _, files in os.walk(dir):
for f in files:
result = []
fpath = os.path.join(jobs, os.path.basename(f))
params = [fpath]
result.append(subprocess.check_output([params]))
expectedname = dir2 + os.path.basename(f) + ".test"
expectedfile = open(expectedname, 'r')
expected = []
expected.append(expectedfile.read())
print '\nEXPECTED: %s\nACTUAL: %s' % (expected, result)
if result == expected:
print "\n%s is correct!\n" % (os.path.basename(f))
else:
print "\n%s gave incorrect output!\n" % (os.path.basename(f))
问题是,当.bat文件运行并生成其输出时,它的末尾添加了“
\r\n
”。我试图通过将“\r\n
”也放在解决方案文件中来解决这个问题,但在读取它时,它将其更改为“\\r\\n
”。我怎样才能解决这个问题
注意:显然SO的代码格式突出显示了“和”,默认情况下,echo中出现的单词根本不会影响它的功能。只是不想让人困惑哈哈你可以在你的批次中尝试这个:
@echo关闭
更新:我通过将expected.append行更改为expected.append(expectedfile.read()+'\r\n')
,找到了一种解决方法,但我觉得这在实际正确性方面还很粗略。”我尝试将“\r\n”也放在解决方案文件中,但读取时它会将其更改为“\r\n”哈?马蒂诺:很抱歉,我把它改成了我想写的东西,它改成了\\r\\n
谢谢你的回复,但是当我尝试这个方法时,它最终崩溃了,它在我调用子进程的行上出现了一个错误。检查输出()
并说“引发被调用的进程错误(retcode,cmd,output=output)subprocess.CalledProcessError:Command'['c:/users/soft/testjobs/hello.bat']'返回非零退出状态1“@thnkwthprtls我又添加了一个建议。谢谢@endro,该建议运行得很好:)在我的测试目录中有几个看似随机的输出文件,仍然有点问题,但似乎对绝大多数文件都有效,谢谢!