Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在批处理输出中删除下线转义字符_Python_Batch File - Fatal编程技术网

Python 如何在批处理输出中删除下线转义字符

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 _, _

我有一个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 _, _, 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,该建议运行得很好:)在我的测试目录中有几个看似随机的输出文件,仍然有点问题,但似乎对绝大多数文件都有效,谢谢!