zoukankan      html  css  js  c++  java
  • python通过os.system()方法执行pscp提示却找不到该应用程序

    python通过os.system()方法执行pscp提示却找不到该应用程序

    已经提前下载了pscp.exe 放到了system32文件夹,在CMD命令窗口执行pscp没有异常
    但是使用os.system('pscp')时出现了报错提示找不到该应用程序。

    原因:

    原来是python版本时32位的程序,而电脑系统是windows 64位
    使用32位的python访问windows命令时,会被自动重定向到C:WindowsSysWOW64文件夹中(32位的命令),如果在C:WindowsSysWOW64文件夹中没有找到相关的命令即pscp.exe,就会报上面的错误信息。

    如果想在32位的python中直接访问C:WindowsSystem32文件夹中64位的命令,则应该使用C:WindowsSysNative这个虚拟路径来访问。
    在32位的python中使用os.system 访问 C:WindowsSystem32pscp.exe  ----> 系统实际上会去访问 C:WindowsSysWOW64pscp.exe
    访问 C:WindowsSysNativepscp.exe ----> 系统实际上会去访问 C:WindowsSystem32pscp.exe

    其实%WINDIR%SysNative文件夹是不存在的,它只是64位Windows系统提供的一种重定向机制。
    我们已经知道64位Windows通过System32和SysWoW64两件文件夹来区分64位和32位的系统文件,当32位的应用程序尝试访问System32文件夹的时候,系统会自动把它转到SysWoW64文件夹,这样32位应用程序在32位系统和64位系统就都可以运行了,(而不需要为了64位系统而把System32改成SysWoW64)。
    这样就出现了一个问题,32位的应用程序怎么访问真正的System32文件夹呢,即存放64位系统文件的文件夹?答案就是通过SysNative文件夹。这个文件夹并不存在,即在资源管理器中找不到,但当32位的应用程序尝试访问这个文件夹时,64位的Windows会把它重定向到真正的System32文件夹,从而提供了一种让32位应用程序访问64位系统文件的方法

    https://stackoverflow.com/questions/5144402/nothing-returned-when-using-32-bit-python-os-popen-on-a-64-bit-windows-7-system

  • 相关阅读:
    CCF NOI1079 合法C标识符
    CCF NOI1080 统计字符
    CCF NOI1076 进制转换
    CCF NOI1065 最小公倍数
    CCF NOI1139 高精度减法
    CCF NOI1138 高精度加法
    CCF NOI1115 找数
    CCF NOI1097 数列
    CCF NOI1089 高精度运算
    NUC1931 Problem D 区间素数【素数筛选】
  • 原文地址:https://www.cnblogs.com/stephenmc/p/14919382.html
Copyright © 2011-2022 走看看