小编OJW*_*OJW的帖子

显示比"无JSON对象可以解码"更好的错误消息

用于从一些冗长复杂的JSON文件加载数据的Python代码:

with open(filename, "r") as f:
  data = json.loads(f.read())
Run Code Online (Sandbox Code Playgroud)

(注意:最好的代码版本应该是:

with open(filename, "r") as f:
  data = json.load(f)
Run Code Online (Sandbox Code Playgroud)

但都表现出类似的行为)

对于许多类型的JSON错误的(缺少分隔符,在字符串中不正确的反斜杠,等等),这个打印包含在那里被发现的JSON错误的行和列数一个不错的有用信息.

但是,对于其他类型的JSON错误(包括经典的"在列表中的最后一项上使用逗号",还有其他内容,如大写true/false),Python的输出只是:

Traceback (most recent call last):
  File "myfile.py", line 8, in myfunction
    config = json.loads(f.read())
  File "c:\python27\lib\json\__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "c:\python27\lib\json\decoder.py", line 360, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "c:\python27\lib\json\decoder.py", line 378, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
Run Code Online (Sandbox Code Playgroud)

对于那种类型的ValueError,你如何让Python告诉你JSON文件中的错误在哪里?

python json

124
推荐指数
3
解决办法
25万
查看次数

建议产品的算法

什么是一个很好的算法,根据他们以前的选择建议某人可能喜欢的东西?(例如,由亚马逊推广推荐书籍,并在iRate Radio或YAPE等服务中使用,您可以通过评分项目获得建议)

algorithm autosuggest

19
推荐指数
1
解决办法
7970
查看次数

Python urllib超过TOR?

示例代码:

#!/usr/bin/python
import socks
import socket
import urllib2

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS4, "127.0.0.1", 9050, True)
socket.socket = socks.socksocket

print urllib2.urlopen("http://almien.co.uk/m/tools/net/ip/").read()
Run Code Online (Sandbox Code Playgroud)

TOR在端口9050上运行SOCKS代理(默认值).该请求通过TOR,在我自己以外的IP地址上显示.但是,TOR控制台会发出警告:

"2月28日22:44:26.233 [警告]你的应用程序(使用socks4到端口80)只给Tor一个IP地址.做DNS解析的应用程序本身可能泄漏信息.考虑使用Socks4A(例如通过privoxy或socat).有关详细信息,请参阅 https://wiki.torproject.org/TheOnionRouter/TorFAQ#SOCKSAndDNS."

即DNS查找不通过代理.但这就是setdefaultproxy应该做的第4个参数,对吧?

来自http://socksipy.sourceforge.net/readme.txt:

setproxy(proxytype,addr [,port [,rdns [,username [,password]]]])

rdns - 这是一个布尔标志,而不是修改DNS解析的行为.如果设置为True,则将在服务器上远程执行DNS解析.

选择PROXY_TYPE_SOCKS4和PROXY_TYPE_SOCKS5时效果相同.

它不能是本地DNS缓存(如果urllib2甚至支持它),因为当我将URL更改为此计算机以前从未访问过的域时会发生这种情况.

python urllib2 tor socks

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

制作C标识符和字符串?

假设您要生成标识符和字符串的匹配列表

enum
{
NAME_ONE,
NAME_TWO,
NAME_THREE
};

myFunction(NAME_ONE, "NAME_ONE");
myFunction(NAME_TWO, "NAME_TWO");
myFunction(NAME_THREE, "NAME_THREE");
Run Code Online (Sandbox Code Playgroud)

..没有重复自己,没有自动生成代码,使用C/C++宏

初步猜测:

您可以添加包含的#include文件

myDefine(NAME_ONE)
myDefine(NAME_TWO)
myDefine(NAME_THREE)
Run Code Online (Sandbox Code Playgroud)

然后使用它两次,如:

#define myDefine(a) a,
enum {
#include "definitions"
}
#undef myDefine

#define myDefine(a) myFunc(a, "a");
#include "definitions"
#undef myDefine
Run Code Online (Sandbox Code Playgroud)

但#define不允许你在字符串中放置参数?

c c-preprocessor preprocessor-directive

15
推荐指数
1
解决办法
7015
查看次数

pyparsing - 加载ABNF?

pyparsing可以从文件中读取ABNF而不必根据python对象定义它吗?

如果没有,是否有类似的东西(将ABNF文件加载到解析器对象)

python parsing pyparsing

11
推荐指数
2
解决办法
1920
查看次数

如何在没有Internet连接的情况下在ActivePerl中安装软件包?

在ActivePerl中,"ppm"从Internet安装包,"ppm install x.ppd"从ppd文件安装,但大多数CPAN包以.tar.gz形式分发.

如何为运行没有Internet连接的ActivePerl的计算机提供模块?("make"可能无法使用.)

更新:Internet连接可用于下载文件并使用USB密钥等将其传输到计算机.

windows perl activeperl

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

Python gettext - 不翻译

示例python程序:[CGI脚本,因此它需要选择自己的语言,而不是使用主机操作系统设置的任何内容]

import gettext
gettext.install('test', "./locale")
_ = gettext.gettext

t = gettext.translation('test', "./locale", languages=['fr'])
t.install()

print _("Hello world")
Run Code Online (Sandbox Code Playgroud)

./locale/fr/LC_messages/test.mo包含转换(作为二进制文件,通过在.po文件上运行msgfmt生成).

程序打印"Hello world"而不是翻译版本.可能是什么问题呢?

python gettext internationalization

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

没有本地存储库的Git

考虑这样一种情况:例如,一个20GB目录存储在一台没有20.1GB磁盘空间的计算机上,我们希望将该目录置于版本控制之下.服务器可用于存储修订历史记录.

在subversion中,我们从服务器检出一个空目录,添加文件并提交它.这将创建与工作目录大小相同的.svn目录,以便它可以检测更改并创建差异.在进行常规更改时,.svn目录的大小不会随时间而变化.

但是,在git(git init .; git add .; git commit)中尝试这一点需要我们在本地存储完整的历史记录.由于进行了常规更改(假设大型二进制文件不能很好地压缩),.git目录会一直增长,直到它不适合磁盘.

有没有办法操作git,以便它不会在本地存储完整的历史记录; 这样它只保存有关您正在处理的分支的提示的数据,并在每次需要有关历史修订或其他分支的信息时查询远程服务器?

注意:我知道.git目录的压缩效果更好,你可以在大于.svn目录之前进行大量的修改 - 问题是它随着时间的推移而增长,而.svn却没有

git

6
推荐指数
2
解决办法
3547
查看次数

列表视图控件是否有选择更改事件?

LBN_SELCHANGE除了列表视图之外,是否有等效的事件?

c winapi listview

5
推荐指数
1
解决办法
3979
查看次数

使用仅存在于某些数据类型中的字段的C++模板函数?

是否有可能有一个C++模板函数可以访问其输入数据中的不同字段,具体取决于传递给它的输入数据类型

例如,我有以下形式的代码:

typedef struct
{
  int a;
  int b;
}s1;

typedef struct
{
  int a;
}s2;

template <class VTI_type> void myfunc(VTI_type VRI_data, bool contains_b)
{
  printf("%d", VRI_data.a);

  if(contains_b) // or suggest your own test here
    printf("%d", VRI_data.b); // this line won't compile if VTI_type is s2, even though s2.b is never accessed
}

void main()
{
  s1 data1;
  data1.a = 1;
  data1.b = 2;
  myfunc <s1> (data1, true);

  s2 data2;
  data2.a = 1;
  myfunc <s2> (data2, false);
} …
Run Code Online (Sandbox Code Playgroud)

c++ templates

5
推荐指数
1
解决办法
1462
查看次数