【发布时间】:2019-12-02 22:20:38
【问题描述】:
我正在尝试运行 Powershell 脚本(请查看下方) 首先要说的是,我的 Powershell 脚本在使用 Powershell 运行时工作正常,给出了预期的结果(关闭所有打开的文件夹),但我必须从 Python 脚本中调用它,因此我尝试使用 subprocess.Popen,但我有错误 : "io.UnsupportedOperation: fileno"
已经尝试了几种不同的方法,但建议的解决方案不起作用。
我正在尝试调用以下 Powershell 脚本:
$shell = New-Object -ComObject Shell.Application
$shell.Windows() | Format-Table LocationName, LocationURL
$window = $shell.Windows()
$window | ForEach-Object { $_.Quit() }
想法是关闭所有打开的文件夹,直接用Powershell运行就可以了。
然后我尝试从 Python 调用这个脚本:
p = subprocess.Popen(['powershell.exe', 'C:\\Users\\(correct subfolders)\\TEST.ps1'])
或
p = subprocess.Popen(['C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', 'C:\\Users\\(correct subfolders)\\TEST.ps1'])
并且它们不返回错误,打开一个 cmd 窗口,但没有任何反应。 然后我尝试了以下方法:
p = subprocess.Popen(['powershell.exe', 'C:\\Users\\(correct subfolders)\\TEST.ps1'], stdout=sys.stdout)
但我有以下错误(检查下方)
File "<pyshell#15>", line 1, in <module>
p = subprocess.Popen(['powershell.exe', 'C:\\Users\\FernanP\\Desktop\\TEST.ps1'], stdout=sys.stdout)
File "C:\Users\FernanP\AppData\Local\Programs\Python\Python36-32\lib\subprocess.py", line 667, in __init__
errread, errwrite) = self._get_handles(stdin, stdout, stderr)
File "C:\Users\FernanP\AppData\Local\Programs\Python\Python36-32\lib\subprocess.py", line 922, in _get_handles
c2pwrite = msvcrt.get_osfhandle(stdout.fileno())
io.UnsupportedOperation: fileno
我在这里查看了类似的问题,人们说 Pillow 版本,但我目前使用的是 6.1.0,所以应该没有问题。
因此,直接在 Python 中等效于 powershell 脚本就足够了,或者是一种处理此问题的方法。 希望我充分告知。 韩国
【问题讨论】:
标签: python powershell subprocess