我真的厌倦了试图找出为什么这个代码在Python 2中而不是在Python 3中工作.我只是想抓取一个json页面然后解析它.这是Python 2中的代码:
import urllib, json
response = urllib.urlopen("http://reddit.com/.json")
content = response.read()
data = json.loads(content)
Run Code Online (Sandbox Code Playgroud)
我认为 Python 3中的等效代码是这样的:
import urllib.request, json
response = urllib.request.urlopen("http://reddit.com/.json")
content = response.read()
data = json.loads(content)
Run Code Online (Sandbox Code Playgroud)
但它在我脸上爆炸,因为read()返回的数据是"字节"类型.但是,我不能为我的生活让它转换成json能够解析的东西.我从头文件中知道reddit试图将utf-8发送给我,但我似乎无法将字节解码为utf-8:
import urllib.request, json
response = urllib.request.urlopen("http://reddit.com/.json")
content = response.read()
data = json.loads(content.decode("utf8"))
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑:问题是我无法将数据变为可用状态; 即使json加载数据,其中一部分是无法显示的,我希望能够将数据打印到屏幕上.
第二次编辑:问题与打印有关,而不是解析.通过将IO设置为utf8,Alex的答案为脚本在Python 3中的工作方式提供了一种方法.但问题仍然存在:为什么代码在Python 2中工作,而不是Python 3?
假设我有一个这样的类:
#include <iostream>
using namespace std;
class Boda {
private:
char *ptr;
public:
Boda() {
ptr = new char [20];
}
~Boda() {
cout << "calling ~Boda\n";
delete [] ptr;
}
void ouch() {
throw 99;
}
};
void bad() {
Boda b;
b.ouch();
}
int main() {
bad();
}
Run Code Online (Sandbox Code Playgroud)
似乎析构函数~Boda永远不会被调用,因此ptr资源永远不会被释放.
这是程序的输出:
terminate called after throwing an instance of 'int'
Aborted
Run Code Online (Sandbox Code Playgroud)
所以似乎我的问题的答案是No.
但是当我抛出一个异常时,我认为堆栈被解开了?为什么没有Boda b对象在我的例子中被破坏?
请帮我理解这个资源问题.我想在将来写出更好的程序.
这也就是所谓的RAII?
谢谢,Boda Cydo.
我正在尝试使用本指南在C#中播放MP3文件:http: //www.crowsprogramming.com/archives/58
我正在列出所有内容,但我仍然无法在我的C#程序中播放任何音乐.谁能告诉我我做错了什么?
static void Main(string[] args)
{
WMPLib.WindowsMediaPlayer a = new WMPLib.WindowsMediaPlayer();
a.URL = "song.mp3";
a.controls.play();
}
Run Code Online (Sandbox Code Playgroud)
音乐文件"Song"位于bin文件夹中.
我正试图在Python中找到一种在curse模块中获取鼠标点击事件的方法.
我在http://docs.python.org/library/curses.html上阅读了该文档,并建议这样做
c == curses.getch()
if(c == curses.KEY_MOUSE):
curses.getmouse()
...
Run Code Online (Sandbox Code Playgroud)
但是,这个"if语句"似乎永远不会被触发......如果我试图将getmouse()函数移到"if语句"之外来强制它返回鼠标信息,它会返回
(devid,x,y,z,bstate) = curses.getmouse()
_curses.error: getmouse() returned ERR
Run Code Online (Sandbox Code Playgroud)
还有其他想法吗?
我不确定我是否了解V8的架构(是的,我已经阅读了它的文档).
在C#中使用v8sharp包装器我写了这样的东西,例如:
namespace App
{
class Point
{
public Point() { }
public Point(double x, double y) {
this.X = x;
this.Y = y;
}
public double X { get; set; }
public double Y { get; set; }
}
}
static class Program
{
static void Main() {
//registering with v8sharp
V8Engine engine = V8Engine.Create();
engine.Register<App.Point>();
//execute javascript
object rtn = engine.Execute("new App.Point(10, 10);");
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有这个包装器,我将如何在标准C++中编写相同的东西?
谢谢.
我对此错误非常困惑,它显示当我尝试从不存在的DB返回结果时......我尝试mysql_num_rows()但它返回相同的错误但不是mysql_fetch_assoc期望...它说mysql_num_rows()...
我设置error_reporting(0)为避免显示此错误,但我对此解决方案不满意...
我正在寻找一个通用的数据访问框架,它将提供各种nosql数据库的可移植性,如SimpleDB,Azure Tables,Cassandra,CouchDB,MongoDb等.我正在构建一个应用程序,并希望我的客户能够使用哪个他们想要的nosql商店.
在更关系的场景中,我使用Linq而非nHibernate或Entity Framework,但我没有找到nosql数据库的等效框架.我发现的只是数据库特定的API,尽管似乎有很大的共性.有人存在吗?最好用LINQ.
考虑到这两个调用的getQualifiedClassName的返回相同的事情(MX:标签),如何将一个去编程一类的实例和类的引用之间的区别...
var lab1:Label=new Label();
var lab2:Class=Label;
var qcn1:String=getQualifiedClassName(lab1);
var qcn2:String=getQualifiedClassName(lab2);
Run Code Online (Sandbox Code Playgroud)
换句话说,我怎么知道lab1是Label类型,而lab2是类型"Class".
typeof()只为两者返回"object"... getQualifiedClassName为两者返回"mx.controls :: Label"...
我该用什么?
我目前使用Boost的多指标,以帮助跟踪的包多少次穿过系统.
每次系统触摸数据包时,其IP地址都会添加到以逗号分隔的字符串中.然后我查看该字符串,将其标记化并将找到的每个IP添加到多索引中.由于IP现在设置为唯一,因此不可能将相同的IP添加到多索引两次.那么应该发生的是与IP地址相关联的值应该递增,计算数据包通过同一IP的次数.
无论如何,我的问题来自这里.当我使用像stl map这样的东西时,我会得到一个响应,让我知道由于地图中已存在重复的密钥而无法添加密钥.Boost的多指数是否提供类似的东西?我知道,如果我尝试插入相同的IP,它将失败,但我怎么能告诉它失败?
这是我当前代码的一部分:
// Multi-index handling
using boost::multi_index_container;
using namespace boost::multi_index;
struct pathlog
{
string hop;
int passedthru;
pathlog(std::string hop_,int passedthru_):hop(hop_),passedthru(passedthru_){}
friend std::ostream& operator<<(std::ostream& os,const pathlog& e)
{
os<<e.hop<<" "<<e.passedthru<<std::endl;
return os;
}
};
// structs for data
struct hop{};
struct passedthru{};
// multi-index container setup
typedef multi_index_container<
pathlog,
indexed_by<
ordered_unique<
tag<hop>, BOOST_MULTI_INDEX_MEMBER(pathlog,std::string,hop)>,
ordered_non_unique<
tag<passedthru>, BOOST_MULTI_INDEX_MEMBER(pathlog,int,passedthru)> >
> pathlog_set;
int disassemblepathlog(const string& str, pathlog_set& routecontainer, const string& delimiters = ","){
// Tokenizer (heavily modified) from http://oopweb.com/CPP/Documents/CPPHOWTO/Volume/C++Programming-HOWTO-7.html …Run Code Online (Sandbox Code Playgroud) 我正在尝试计算我的java appengine应用程序每天的唯一身份用户数.我已决定使用mapreduce框架(mapreduce.appspot.com)进行java appengine离线执行此计算.我已经设法创建了一个map reduce工作,它遍历我所有代表单个用户会话事件的实体.我也可以使用一个简单的计数器.我有几个问题:
1)我如何只为每个用户ID增加一次计数器?我目前正在映射包含用户ID属性的实体,但许多这些实体可能包含相同的用户ID,所以我如何只计算一次?
2)一旦我将这些作业的结果存储在这些计数器中 - 我如何将它们保存到数据存储区?我在mapreduce的状态页面上看到了计数器的结果,但我希望这些结果自动保存到数据存储区.
想法?
c++ ×3
c# ×2
python ×2
acquisition ×1
actionscript ×1
air ×1
apache-flex ×1
boost ×1
couchdb ×1
curses ×1
destructor ×1
flash ×1
java ×1
json ×1
mapreduce ×1
mongodb ×1
mouseevent ×1
mp3 ×1
multi-index ×1
mysql ×1
nosql ×1
php ×1
python-3.x ×1
resources ×1
return-value ×1
urllib ×1
v8 ×1
warnings ×1