Python 子进程 POpen 目录处理
Python Subprocess POpen Directory Handling
我是 python 的新手,我仍在尽我所能地努力学习这门手艺。我最近开始涉足自动化,而我尝试自动化的不太吸引人的事情之一是 Microsoft Baseline Security Analyzer 的自动化。它所做的只是检查机器上的补丁以及缺少哪些补丁,简单吧?
无论如何,我坚持的部分是我正在尝试执行应用程序以 运行 扫描位于文本文件中的多个主机名。我正在使用的命令如下所示:
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
Desktop 和 "est.txt" 之间的巨大空白 space 是什么问题,首先应该是 test.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
发生的情况是 \
字符被解析为特殊字符,其中 \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'])
我是 python 的新手,我仍在尽我所能地努力学习这门手艺。我最近开始涉足自动化,而我尝试自动化的不太吸引人的事情之一是 Microsoft Baseline Security Analyzer 的自动化。它所做的只是检查机器上的补丁以及缺少哪些补丁,简单吧?
无论如何,我坚持的部分是我正在尝试执行应用程序以 运行 扫描位于文本文件中的多个主机名。我正在使用的命令如下所示:
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
Desktop 和 "est.txt" 之间的巨大空白 space 是什么问题,首先应该是 test.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
发生的情况是 \
字符被解析为特殊字符,其中 \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'])