Python子进程POpen目录处理

2024-09-27 23:13:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还很陌生,仍然在努力自己尽可能地学习这门手艺。我最近开始进入自动化领域,我正在尝试自动化的一个不那么吸引人的事情是微软基线安全分析器的自动化。它所做的只是检查机器上的补丁以及哪些补丁丢失了,很简单吧?你知道吗

不管怎么说,我被困的部分是,我正在尝试执行应用程序,以便在文本文件中的多个主机名上运行扫描。我使用的命令如下所示:

subprocess.Popen(['mbsacli','/listfile','"C:\Users\me\Desktop\test.txt"', '/n', 'os+iis+sql+password'])

出现问题的部分是python处理目录路径的方式。我的意思是它告诉我:

Error: Cannot open file C:\Users\me\Desktop        est.txt

“桌面和”之间的巨大空白est.txt文件“问题是什么,应该是什么测试.txt首先,它不能很好地处理斜杠()。你知道吗

任何帮助都会很有帮助的,谢谢。你知道吗

编辑

到目前为止,我尝试了以下方法:

subprocess.Popen(['mbsacli','/listfile','r C:\Users\dxd0857\Desktop\test.txt', '/n', 'os+iis+sql+password'])

subprocess.Popen(['mbsacli','/listfile','C:\\Users\\dxd0857\Desktop\\test.txt', '/n', 'os+iis+sql+password'])

subprocess.Popen(['mbsacli','/listfile','r C:\\Users\\dxd0857\\Desktop\\test.txt', '/n', 'os+iis+sql+password'])

结果仍然是相同的错误:

Error: Cannot open file r C:\Users\me\Desktop      est.txt

Tags: testtxtsqlospasswordiisusersme
1条回答
网友
1楼 · 发布于 2024-09-27 23:13:52

所发生的是\字符被解析为特殊字符,其中\t表示制表符。你知道吗

因此,必须使用\\作为反斜杠:

subprocess.Popen(['mbsacli', 
                  '/listfile', 'C:\\Users\\me\\Desktop\\test.txt', 
                  '/n', 'os+iis+sql+password'])

…或者改用原始字符串(谢谢@tripleee@eryksun):

subprocess.Popen(['mbsacli', 
                  '/listfile', r'C:\Users\me\Desktop\test.txt', 
                  '/n', 'os+iis+sql+password'])

相关问题 更多 >

    热门问题