Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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_Oracle_Subprocess_Sqlplus - Fatal编程技术网

Python 子进程给出一个错误&引用;系统找不到指定的文件";

Python 子进程给出一个错误&引用;系统找不到指定的文件";,python,oracle,subprocess,sqlplus,Python,Oracle,Subprocess,Sqlplus,这是我的代码: import urllib import requests from bs4 import * from subprocess import Popen,PIPE import os connectString = 'SYSTEM/mediadot123' def runSqlQuery(sqlCommand, connectString): session = Popen(['sqlplus', '-S', connectString], stdin=PIPE, s

这是我的代码:

import urllib
import requests

from bs4 import *
from subprocess import Popen,PIPE
import os

connectString = 'SYSTEM/mediadot123'

def runSqlQuery(sqlCommand, connectString):
   session = Popen(['sqlplus', '-S', connectString], stdin=PIPE, stdout=PIPE, stderr=PIPE)
   session.stdin.write(sqlCommand)
   return session.communicate()

session = Popen(['sqlplus','-S','hr/hr'], stdin=PIPE, stdout=PIPE, stderr=PIPE)
stdout, stderr = session.communicate()

sqlCommand = "insert into food(title, recipe, image) values ('bla','bla','bla');"
queryResult, errorMessage = runSqlQuery(sqlCommand, connectString)
print queryResult
它给出了以下错误:

C:\Python27\python.exe C:/Users/Umer/PycharmProjects/DATACRAWLER/main.py

Traceback (most recent call last):

  File "C:/Users/Umer/PycharmProjects/DATACRAWLER/main.py", line 38, in <module>

session = subprocess.Popen(['sqlplus','-S','hr/hr'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

  File "C:\Python27\lib\subprocess.py", line 710, in __init__
    errread, errwrite)

  File "C:\Python27\lib\subprocess.py", line 958, in _execute_child
    startupinfo)

WindowsError: [Error 2] The system cannot find the file specified
C:\Python27\python.exe C:/Users/Umer/PycharmProjects/DATACRAWLER/main.py
回溯(最近一次呼叫最后一次):
文件“C:/Users/Umer/PycharmProjects/DATACRAWLER/main.py”,第38行,在
session=subprocess.Popen(['sqlplus','-S','hr/hr'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
文件“C:\Python27\lib\subprocess.py”,第710行,在_init中__
错误读取,错误写入)
文件“C:\Python27\lib\subprocess.py”,第958行,在执行子进程中
startupinfo)
WindowsError:[错误2]系统找不到指定的文件

考虑使用绝对路径执行命令。
根据用户、系统和软件安装情况,某些二进制文件不在路径中

要找出
sqlplus
驻留的位置,请在
cmd.exe
中运行以下命令:
where-sqlplus
,这将为您提供绝对路径

然后简单地做:

Popen(['C:/path/sqlplus.exe', '-S', ...])
另外,要了解
PATH
环境变量中的实际内容,可以执行以下操作:

print(os.environ['PATH'])

sqlplus在您的路径中吗?您是否尝试过用sqlplus的绝对路径替换
'sqlplus'
?您能告诉我应该添加什么路径吗?文件系统上的
sqlplus
可执行文件在哪里?例如,如果是
C:\Program Files\Oracle\sqlplus.exe
则将
C:\Program Files\Oracle`添加到您的路径中。更简单的是,只需将
'sqlplus`替换为
'C:\Program Files\Oracle\sqlplus.exe'
我只通过cmd使用SQPLUS,Oracle文件夹中没有可执行文件。另外,我已经在我的计算机上运行了相同的代码,但当我在远程桌面上运行相同的代码时;它给出了这个错误。我在两者上都使用Oracle11gEnterpriseEdition,它们都是x64