问题列表 - 第29597页

Python 2与Python 3 - urllib格式

我真的厌倦了试图找出为什么这个代码在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?

python compatibility json urllib python-3.x

21
推荐指数
2
解决办法
1万
查看次数

是否会调用抛出异常的C++类的析构函数?

假设我有一个这样的类:

#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++ resources destructor acquisition

6
推荐指数
1
解决办法
898
查看次数

如何在C#中播放mp3文件?

我正在尝试使用本指南在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文件夹中.

c# mp3

13
推荐指数
3
解决办法
5万
查看次数

Python诅咒getmouse函数?

我正试图在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)

还有其他想法吗?

python curses mouseevent

2
推荐指数
1
解决办法
1597
查看次数

了解Google V8的架构

我不确定我是否了解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++中编写相同的东西?

谢谢.

c# c++ v8

6
推荐指数
1
解决办法
1848
查看次数

如何防止此错误:警告:mysql_fetch_assoc()期望参数1是资源,布局在第11行的...中给出

可能重复:
PHP错误:mysql_fetch_array()期望参数1是资源,给定布尔值

我对此错误非常困惑,它显示当我尝试从不存在的DB返回结果时......我尝试mysql_num_rows()但它返回相同的错误但不是mysql_fetch_assoc期望...它说mysql_num_rows()...

我设置error_reporting(0)为避免显示此错误,但我对此解决方案不满意...

php mysql warnings

7
推荐指数
1
解决办法
13万
查看次数

.NET是否存在数据库无关的nosql框架?

我正在寻找一个通用的数据访问框架,它将提供各种nosql数据库的可移植性,如SimpleDB,Azure Tables,Cassandra,CouchDB,MongoDb等.我正在构建一个应用程序,并希望我的客户能够使用哪个他们想要的nosql商店.

在更关系的场景中,我使用Linq而非nHibernate或Entity Framework,但我没有找到nosql数据库的等效框架.我发现的只是数据库特定的API,尽管似乎有很大的共性.有人存在吗?最好用LINQ.

couchdb mongodb nosql amazon-simpledb azure-table-storage

6
推荐指数
1
解决办法
1439
查看次数

类引用与类实例的区别

考虑到这两个调用的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"...

我该用什么?

apache-flex air flash actionscript actionscript-3

2
推荐指数
1
解决办法
469
查看次数

多指数插入失败返回(提升)

我目前使用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)

c++ boost return-value multi-index

4
推荐指数
1
解决办法
3624
查看次数

使用Mapreduce for Java Appengine计算唯一用户数

我正在尝试计算我的java appengine应用程序每天的唯一身份用户数.我已决定使用mapreduce框架(mapreduce.appspot.com)进行java appengine离线执行此计算.我已经设法创建了一个map reduce工作,它遍历我所有代表单个用户会话事件的实体.我也可以使用一个简单的计数器.我有几个问题:

1)我如何只为每个用户ID增加一次计数器?我目前正在映射包含用户ID属性的实体,但许多这些实体可能包含相同的用户ID,所以我如何只计算一次?

2)一旦我将这些作业的结果存储在这些计数器中 - 我如何将它们保存到数据存储区?我在mapreduce的状态页面上看到了计数器的结果,但我希望这些结果自动保存到数据存储区.

想法?

java parallel-processing google-app-engine mapreduce

6
推荐指数
1
解决办法
1284
查看次数