小编Mar*_*tin的帖子

模块从xml创建python对象表示

我正在寻找一个易于处理的python本机模块来从xml创建python对象表示.

我通过谷歌找到了几个模块(其中一个是XMLObject),但不想尝试所有这些模块.

您认为做这些事情的最佳方式是什么?

编辑:我错过了提到我想要阅读的XML不是由我生成的.它是一个我无法控制的结构中的现有XML文件.

python xml pickle

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

当连接中断时,读取urllib2创建的流永远不会恢复

在尝试使我的一个python应用程序在连接中断的情况下更加健壮时,我发现调用urllib2创建的http-stream的read函数可能会永久阻止脚本.

我认为读取函数将超时并最终引发异常,但是当读取函数调用期间连接中断时,这种情况并不接近.

以下是导致问题的代码:

import urllib2

while True:
    try:
        stream = urllib2.urlopen('http://www.google.de/images/nav_logo4.png')
        while stream.read(): pass
        print "Done"
    except:
        print "Error"
Run Code Online (Sandbox Code Playgroud)

(如果您尝试使用该脚本,则可能需要多次中断连接才能达到脚本永远无法恢复的状态)

我通过Winpdb观看了脚本,并制作了脚本永远无法恢复的状态的屏幕截图(即使网络再次可用).

Winpdb http://img10.imageshack.us/img10/6716/urllib2.jpg

有没有办法创建一个即使网络连接中断也能继续工作的python脚本?(我宁愿避免在一个额外的线程中这样做.)

python urllib2

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

从内联代码调用原始Page_Load函数

我喜欢Monkey修补ASPX网站,以便我可以在编译的程序集中添加内容到Page_Load方法.

我的第一个想法是将包含第二个Page_Load方法的脚本标记添加到ASPX文件中,如下所示:

<script language="CS" runat="server">
void Page_Load(object sender, System.EventArgs e) 
{
     // do some stuff in addition to the original Page_Load method
}
</script>
Run Code Online (Sandbox Code Playgroud)

但看起来只有内联代码中的Page_Load方法才会被执行,而不是原始代码隐藏文件中的那个(在编译的程序集中).

是否可以从我的内联代码中调用原始方法?或者是否有任何其他方法来添加应该在内联代码中调用Page_Load方法后直接运行而不修改现有程序集的内容?

.net asp.net code-behind inline-code

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

当使用泛型类型约束时,XmlSerializer抛出InvalidOperationException

当我尝试运行以下代码(两个分离的程序集)时

ClassLibrary.cs

public interface ITest
{
}
Run Code Online (Sandbox Code Playgroud)

Program.cs中

using System;

public class TestClass
{
    public void Test<T>(T x) where T : ITest { }
}

static class Program
{ 
    static void Main(string[] args)         
    {
        new System.Xml.Serialization.XmlSerializer(typeof(TestClass));
    }
}
Run Code Online (Sandbox Code Playgroud)

使用以下命令在Windows 7 64位中编译:

c:\ Windows\Microsoft.NET\Framework\v2.0.50727\csc/target:library ClassLibrary.cs

c:\ Windows\Microsoft.NET\Framework\v2.0.50727\csc /reference:ClassLibrary.dll Program.cs

我得到了这个例外:

System.InvalidOperationException:无法生成临时类(result = 1).错误CS0012:类型ITest在未引用的程序集中定义.您必须添加对程序集ClassLibrary的引用,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null hinzu.

在System.Xml.Serialization.Compiler.Compile(大会父,串NS,XmlSerializerCompilerParameters xmlParameters,证据证据)
在System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping [] xmlMappings,类型[]类型,字符串defaultNamespace,证据证据, XmlSerializerCompilerParameters参数,装配组件,哈希表组件)在System.Xml.Serialization.TempAssembly..ctor(XmlMapping [] xmlMappings,类型[]类型,字符串defaultNamespace,字符串位置,证据证据)在System.Xml.Serialization.XmlSerializer.GenerateTempAssembly在Program.Main(String [] args)的System.Xml.Serialization.XmlSerializer..ctor(Type type,String defaultNamespace)中的(XmlMapping xmlMapping,Type type,String defaultNamespace)

TestClass移除where T:ITest或根本不使用泛型(例如使用 …

.net c# generics xmlserializer

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

在批处理文件中查明文件是否超过4小时

很简单,我怎么知道文件夹中的特定文件是否超过X小时?文件名和位置将始终相同.

谢谢

command-line batch-file batch-processing

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

如何使用XmlSerializer反序列化为现有实例?

是否有可能使用XmlSerializer将其数据反序列化为现有的类实例而不是新的实例?

这在两种情况下会有所帮助:

  1. 轻松将两个XML文件合并到一个对象实例中.
  2. 让object constructer本身就是从XML文件加载其数据的人.

如果默认情况下不可能,它应该使用反射(在反序列化后复制每个属性),但这将是一个丑陋的解决方案.

.net c# serialization .net-2.0

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

从log4net转发到NLog

在我目前的项目中,我使用两个库,其中一个使用log4net,另一个使用NLog进行日志记录.我个人更喜欢NLog,所以它也在我的应用程序中使用.

我对log4net了解不多,所以我问的是以编程方式将所有消息从log4net转发到NLog的最佳方法.

在NLog论坛上有一篇关于log4net转发器的帖子,但看起来之前没有人这么做过.

.net c# logging log4net nlog

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

以人类可读的文本格式序列化

在.NET 2.0(C#)中是否有一种方法可以像使用XmlSerializer那样以简单/可定制的人类可读格式(例如PXLS或JSON )来序列化对象?另外我知道XML是人类可读的,我正在寻找一些不那么令人讨厌的冗余的东西,你可以输出到用户的控制台.

.net c# serialization .net-2.0

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

如何在 Sqlite 中的一个查询中更新和选择一行?

我想在 Sqlite 中的一个查询中更新和选择一行。在 MySql 中,我想要的查询如下所示:

SET @update_id := -1;
UPDATE data SET `Status` = 'running', Id = (SELECT @update_id := Id) 
  WHERE `Status` = 'scheduled' LIMIT 1;
SELECT * FROM data WHERE id=@update_id;"
Run Code Online (Sandbox Code Playgroud)

上面的查询将状态设置为“正在运行”,变量@update_id的值设置为状态为“已调度”的第一行的修改行的ID,然后使用变量@update_id获取完整的修改排。

重要的一点是我需要选择我被UPDATE语句修改过的行

但据我所知 Sqlite 不支持变量。

如何为 Sqlite 重写上面的 MySQL 查询?

mysql sql sqlite

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

用于轮询窗口服务的计时器

我编写了一个Timer类,以便在轮询另一个系统的Windows服务中使用它.我这样做是因为我有两个问题System.Timers.Timer没有解决.

  1. Elapsed EventHanler在后台运行,因此如果主线程结束,它的执行将中止.我希望该System.Timers.Timer.Stop函数阻止主线程,直到Elapsed EventHanler的执行结束.
  2. System.Timers.Timer不处理事件再入.我希望Interval介于两个Elapsed EventHanler之间,这样如果之前的调用(+ interval)还没有完成,Timer就不会调用Elapsed EventHanler.

在编写课程时,我发现我需要解决一些与thrading相关的问题,因为我不太熟悉那些我想知道以下Timer类是否是线程安全的?

public class Timer
{
    System.Timers.Timer timer = new System.Timers.Timer() { AutoReset = false };
    ManualResetEvent busy = new ManualResetEvent(true);

    public double Interval
    {
        get { return timer.Interval; }
        set { timer.Interval = value; }
    }

    public Timer()
    {
        timer.Elapsed += new ElapsedEventHandler(TimerElapsed);
    }

    void TimerElapsed(object sender, ElapsedEventArgs e)
    {
        try
        {
            busy.Reset();
            OnElapsed(e);
            timer.Start();
        }
        finally
        {
            busy.Set();
        }
    }

    public event EventHandler Elapsed;

    protected void …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading timer

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

在商业产品中使用NHibernate的MySQL Connector/Net

如果商业产品只与NHibernate直接对话并且NHibernate正在与MySQL Connector/Net交谈,那么在商业(非GPL)产品中合并使用NHibernate(LGPL)和MySQL Connector/Net(GPL)是合法的吗?(如果是的话,许可证的哪一部分告诉我它是什么?)

这是我到目前为止所想知道的(如果我错了,请纠正我):

  • NHibernate是根据LGPL许可的,这意味着我可以在商业产品中自由使用它(链接到它的组件),只要我不修改NHibernate本身.
  • NHibernate能够选择使用MySQL Connector/Net以便与MySQL数据库进行通信.(由于FOSS许可证例外, NHibernate仍然可以是LGPL )
  • 由于我只从我的商业产品链接到NHibernate核心本身,我将间接地能够在MySQL Connector/Net的帮助下与MySQL数据库通信,如果直接使用它将迫使我的商业产品获得许可GPL.

我甚至不依赖于将MySQL Connector/Net与我的商业产品一起发送,而是仅在客户站点上下载并安装它(就像我使用MySQL服务器本身一样).(我希望/认为NHibernate允许这样做)

.net mysql nhibernate licensing

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

如何记录在 IIS 6.0 上运行的 WebService 的通信?

我正在 IIS 6.0 上运行 ASP.NET WebService,它%systemroot%\System32\LogFiles\W3SVC1在客户站点的日志中显示了大量 HTTP 500(可能只是 WebService 的例外) 。

是否可以在不使用 IIS 或 IIS 插件修改 WebService 的情况下记录这些 HTTP 响应的内容和请求?

我想过使用WiresharkFiddler来嗅探 HTTP 流量,但我更愿意在 IIS 中打开一个选项来让他记录通信(这应该不难,因为它无论如何都会记录请求的 URL)

asp.net iis logging web-services

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