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