Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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 2.7 Windows脚本在Unix中不工作_Python_Python 2.7_Api_Unix_Redhat - Fatal编程技术网

Python 2.7 Windows脚本在Unix中不工作

Python 2.7 Windows脚本在Unix中不工作,python,python-2.7,api,unix,redhat,Python,Python 2.7,Api,Unix,Redhat,我有一个python脚本,我想在Redhat 6.7操作系统中运行,但它总是失败 **Python版本:2.7.13(最初它有默认版本,我将其符号链接到usr/local/bin/python2.7,不确定它是否已更改为2.7,但当我在终端中键入Python时,它会显示位置usr/local/bin/Python。) 要在上运行的脚本:OS=Redhat 6.7 用:OS=Windows10(python 2.7.11版)编写的脚本 代码: 这里,打印数据引发了“json解码器错误”,当我回顾这

我有一个python脚本,我想在Redhat 6.7操作系统中运行,但它总是失败

**Python版本:2.7.13(最初它有默认版本,我将其符号链接到usr/local/bin/python2.7,不确定它是否已更改为2.7,但当我在终端中键入Python时,它会显示位置usr/local/bin/Python。)

要在上运行的脚本:OS=Redhat 6.7

用:OS=Windows10(python 2.7.11版)编写的脚本

代码:

这里,打印数据引发了“json解码器错误”,当我回顾这些步骤时,我发现urllib.urlopen(url)根本没有返回所需的json数据,而不是一些ml响应/空

如果我在不同的操作系统中运行python脚本,是否需要做任何特定的更改?python不是一种独立于平台的语言吗?

总体而言,python是一种独立于平台的语言。但这并不意味着平台之间没有区别。如果您查看标准库的文档,您会发现一些注释,即某些函数或类仅在某些平台上可用。例如,在类UNIX操作系统和ms windows之间,
多处理
的工作方式也不同

在本例中,您提到问题始于
urllib.urlopen
没有返回您期望的结果。这可能不是Python代码的问题。我怀疑这是一个网络/路由/防火墙问题。您必须显示返回的非JSON数据才能确定

另外,如果您想在Python中使用HTML,请帮自己一个忙,使用该模块。它比
urllib
更方便用户

编辑1

它说:

无法处理您的请求。无法处理请求

这可能是由于配置错误或请求格式错误造成的

因此,有两个可能的原因:

  • 错误配置
  • 格式错误的请求
与文件相比,返回的网络对象有一些额外的方法,如
info()
getcode()
。使用这些可能会产生一些关于请求失败原因的额外信息


如果您进行POST请求,则必须以某种方式对信息进行格式化和编码。如果您使用
请求.post
,它将为您处理这些详细信息。

有时Windows的
\r\n
行结尾在UNIX/Linux上可能会混淆,因此请尝试使用
dos2unix
进行转换-您可能也必须对数据文件进行转换。这正是您的代码(复制和粘贴的)?您有一个明显的语法错误,可能会生成不同的消息。我认为此片段在第3行中重复了
url='https://
。@GregoryNisbet是的,感谢您指出我编辑的错误it@Rebbeca,这不是重点。你认为这与问题无关。但我们怎么知道这与它无关呢?解决问题所需的所有信息都应直接包含在您的问题中。并努力剔除一些误导性的细节,比如不起作用的URL。同样,请提供一份报告。另请阅读。关于使用请求模块,它没有解决问题。如果问题属于网络/路由/防火墙,我需要在脚本中设置任何代理吗?@Rebbeca我没想到会这样。关于代理设置等,在看到HTTP请求实际返回的内容之前,我们不可能这么说。添加了我得到的响应,而不是json。这有时也会返回一个空响应
import urllib
import json
url = 'https://username:pass@api.amsterdampc.com'# sample URL(tested on 'api.openweathermap.org/data/2.5/weather?q=London' too gives the same error) 
data = json.load(urllib.urlopen(url)) #should return a json data
print data