小编pro*_*eek的帖子

如何在Python中使用try/catch获得更好的错误信息

考虑我用来检查存储的错误消息的try/catch块e.

尝试/抓住以获得 e

queryString = "SELECT * FROM benchmark WHERE NOC = 2"
try:
    res = db.query(queryString) 
except SQLiteError, e:
    # `e` has the error info 
    print `e`
Run Code Online (Sandbox Code Playgroud)

e这里的对象只包含上面的字符串.但是,当python报告未处理的错误时,它会显示一个非常详细的信息,如下所示:

Traceback (most recent call last):
  File "fool.py", line 1, in 
    open("abc.zyz", "r")
IOError: [Errno 2] No such file or directory: 'abc.zyz'

我的问题是,如何获取上述信息(文件和行号等)?或者,如果e包含此信息,它是如何存储在其中的?

python error-handling

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

Git的blob数据和差异信息

据我所知,Git的blob将SHA1哈希作为文件名,以便不复制存储库中的文件.

例如,如果文件A的内容为"abc"并且SHA1散列为"12345",则只要内容不变,则提交/分支可以指向相同的SHA1.

但是,如果将文件A修改为"def"以使SHA哈希"23456",会发生什么?Git是否存储文件A和修改过的文件A(不仅仅是区别,而是整个文件)?

  • 如果是这样,为什么呢?存储差异信息不是更好吗?
  • 如果没有,diff如何跟踪文件中的更改?
  • 其他VCS系统如何 - CVS/SVN/Perforce ......?

添加

以下"Git社区图书"回答了我的大部分问题.

值得注意的是,这与您可能熟悉的大多数SCM系统有很大不同.Subversion,CVS,Perforce,Mercurial等都使用Delta Storage系统 - 它们存储一个提交和下一个提交之间的差异.Git不会这样做 - 它会在每次提交时存储项目中所有文件在此树结构中的外观.这是使用Git时要理解的一个非常重要的概念.

git diff

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

在python/c模式下打开linum模式

我想用python和c模式自动打开linum模式(Mx linum-mode).我在.emacs中添加以下代码,但它似乎不起作用.

(defun my-c-mode-common-hook ()
  (line-number-mode 1))
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)

(defun my-python-mode-common-hook ()
  (line-number-mode 1))
(add-hook 'python-mode-common-hook 'my-python-mode-common-hook)
Run Code Online (Sandbox Code Playgroud)

可能有什么问题?

emacs c-mode python-mode

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

使用Mono运行F#代码

我安装了F#2.0.0,并使用mono 2.8.

let rec fib n =
    match n with
    | 1 | 2 -> 1
    | n -> fib(n-1) + fib(n-2)

let n = 40
let x = fib(n)
printfn "%d" x
Run Code Online (Sandbox Code Playgroud)

我用fsc.exe编译了这段代码来获取fib.exe.使用mono fib.exe运行它会给我这个错误.

mono fact.exe 
Could not load file or assembly 'FSharp.Core, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.

Unhandled Exception: System.TypeLoadException: Could not load type 
'.$Factorial' from assembly 'factorial, Version=0.0.0.0,
 Culture=neutral, PublicKeyToken=null'.

可能有什么问题?

添加

sudo gacutil -i FSharp.Core.dll 

解决了这个问题.

mono f#

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

Python的多个构造函数

我有一个A类,可以通过两种不同的方式生成.

  • a = A(path_to_xml_file)
  • a = A(listA,listB)

第一种方法将文件路径作为输入从XML文件解析以获取listA和listB.第二种方法有两个列表.

我可以想到两种方法来实现多个构造函数.你怎么看?通常Python人员使用什么方法来处理这种情况?

检查类型

class A():
    def __init__(self, arg1, arg2 = None):
        if isinstance(arg1, str): 
            ...
        elif isinstance(arg1, list):
            ...

a = A("abc")
b = A([1,2,3],[4,5,6])
Run Code Online (Sandbox Code Playgroud)

做不同的建设者

class A2():
    def __init__(self):
        pass
    def genFromPath(self, path):
        ...
    def genFromList(self, list1, list2):
        ...
a = A2()
a.genFromPath("abc")
b = A2()
b.genFromList([1,2,3],[4,5,6])
Run Code Online (Sandbox Code Playgroud)

python constructor

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

如何在命令行中使用Emacs启动不同的模式?

有没有办法使用命令行启动不同的emacs模式?例如,是否可以按如下方式运行emacs?

   emacs --org-mode # to start orgmode
   emacs --python-mode # to start python mode
Run Code Online (Sandbox Code Playgroud)

之后我可以运行emacs来输入'Mx org-mode',但我想知道我是否可以启动不同的模式.

emacs mode

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

通过组合两个NSDate创建一个新的NSDate

我有NSDate* day1NSDate* day2.如何NSDate* day3从第1天开始仅复制年/月/日,从第2天复制每小时/分钟/秒?

macos cocoa objective-c nsdate

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

在.NET中只使用MEF获取必要的插件

我有IMessageSender界面.

using System.ComponentModel.Composition;

public interface IMessageSender
{
    void Send(string message);
}
Run Code Online (Sandbox Code Playgroud)

我有两个实现此接口的插件.这是plugin.cs.

using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.Reflection;
using System;

[Export(typeof(IMessageSender))]
public class EmailSender : IMessageSender
{
    public void Send(string message)
    {
        Console.WriteLine(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是plugin2.cs

[Export(typeof(IMessageSender))]
public class EmailSender : IMessageSender
{
    public void Send(string message)
    {
        Console.WriteLine(message + "!!!!");
    }
}
Run Code Online (Sandbox Code Playgroud)

我有这个代码用MEF运行这些插件.

using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.Reflection;
using System.Collections.Generic;
using System;

public class Program
{
    [ImportMany]
    public IEnumerable<IMessageSender> MessageSender { get; set; }

    public static void Main(string[] …
Run Code Online (Sandbox Code Playgroud)

.net c# plugins mef

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

最简单的WPF/C#调试方法来检查发生了什么

使用C++/C,最简单的调试方法是使用cout/printf打印出控制台的内容.

WPF/C#中的等效方法是什么?

我想过使用MessageBox(),但WPF似乎不支持这个功能.我也考虑过使用日志功能,但我不知道它比printf/cout复杂得多.

我可以在Visual Studio中使用断点,即便如此,我需要一些命令来设置断点.

if (ABC())
{
    // What command should be here to set a break point?
}
Run Code Online (Sandbox Code Playgroud)

c# debugging wpf

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

"构造函数调用必须是Java中构造函数中的第一个语句"问题

可能重复:
为什么this()和super()必须是构造函数中的第一个语句?

我想在Java中使用构造函数链.例如,对于第一个构造函数,我有一个字符串作为参数,并在我从参数字符串创建一个对象时调用第二个构造函数.

public class IMethodFinder {
    public IMethodFinder(String projectName, String methodName,
        int numberOfParameters) {
        IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
        IJavaProject javaProject = JavaCore.create(project);
        this(javaProject, methodName, numberOfParameters);
    }

    public IMethodFinder(IJavaProject javaProject, String methodName,
        int numberOfParameters) {
        ... 
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误"构造函数调用必须是构造函数中的第一个语句"错误.

在此输入图像描述

我制作了一个在两个构造函数之间共享的公共代码,但我不确定这是绕过该问题的唯一解决方案.

public class IMethodFinder {
    public IMethodFinder(IJavaProject javaProject, String methodName,
            int numberOfParameters) {
        dosomething(javaProject, methodName, numberOfParameters);
    }

    public IMethodFinder(String projectName, String methodName,
            int numberOfParameters) {
        IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
        IJavaProject javaProject = JavaCore.create(project);
        dosomething(javaProject, methodName, numberOfParameters);
    }

    private void dosomething(IJavaProject javaProject, …
Run Code Online (Sandbox Code Playgroud)

java constructor

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

标签 统计

c# ×2

constructor ×2

emacs ×2

python ×2

.net ×1

c-mode ×1

cocoa ×1

debugging ×1

diff ×1

error-handling ×1

f# ×1

git ×1

java ×1

macos ×1

mef ×1

mode ×1

mono ×1

nsdate ×1

objective-c ×1

plugins ×1

python-mode ×1

wpf ×1