小编ang*_*son的帖子

如何从Python执行程序?由于路径中的空格,os.system失败

我有一个需要执行外部程序的Python脚本,但由于某种原因失败了.

如果我有以下脚本:

import os;
os.system("C:\\Temp\\a b c\\Notepad.exe");
raw_input();
Run Code Online (Sandbox Code Playgroud)

然后它失败并出现以下错误:

'C:\ Temp\a'不被识别为内部或外部命令,可操作程序或批处理文件.

如果我用引号来逃避程序:

import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe"');
raw_input();
Run Code Online (Sandbox Code Playgroud)

然后它工作.但是,如果我添加一个参数,它会再次停止工作:

import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe" "C:\\test.txt"');
raw_input();
Run Code Online (Sandbox Code Playgroud)

执行程序并等待程序完成的正确方法是什么?我不需要从中读取输出,因为它是一个可视化程序,可以完成工作然后退出,但我需要等待它完成.

另请注意,将程序移动到非间隔路径也不是一种选择.


这也不起作用:

import os;
os.system("'C:\\Temp\\a b c\\Notepad.exe'");
raw_input();
Run Code Online (Sandbox Code Playgroud)

注意交换的单/双引号.

在此处有或没有记事本参数,它会失败并显示错误消息

文件名,目录名或卷标语法不正确.

python shellexecute

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

如何防止Rails中的浏览器页面缓存

Ubuntu - > Apache - > Phusion Passenger - > Rails 2.3

我网站的主要部分会对您的点击做出反应.因此,如果您点击链接,它会将您发送到目的地,并立即重新生成您的页面.

但是,如果您点击后退按钮,则看不到新页面.不幸的是,如果没有手动刷新,它就不会出现; 看来浏览器正在缓存它.我想确保浏览器不缓存页面.

另外,我确实想为所有静态资产设置远期到期日期.

解决这个问题的最佳方法是什么?我应该在Rails中解决这个问题吗?Apache的?JavaScript的?

谢谢你的帮助,杰森


唉.这些建议都没有强迫我正在寻找的行为.

也许有一个JavaScript的答案?我可以让rails在注释中写出时间戳,然后让javascript检查以查看时间是否在五秒钟内(或者无论什么工作).如果是,那么很好,但如果没有,那么重新加载页面?

你认为这会有用吗?

感谢你的帮助,

贾森

ruby apache caching ruby-on-rails http-headers

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

Image.Save(..)抛出GDI +异常,因为内存流已关闭

我有一些二进制数据,我想保存为图像.当我尝试保存图像时,如果用于创建图像的内存流在保存之前关闭,则会引发异常.我这样做的原因是因为我正在动态创建图像,因此我需要使用内存流.

这是代码:

[TestMethod]
public void TestMethod1()
{
    // Grab the binary data.
    byte[] data = File.ReadAllBytes("Chick.jpg");

    // Read in the data but do not close, before using the stream.
    Stream originalBinaryDataStream = new MemoryStream(data);
    Bitmap image = new Bitmap(originalBinaryDataStream);
    image.Save(@"c:\test.jpg");
    originalBinaryDataStream.Dispose();

    // Now lets use a nice dispose, etc...
    Bitmap2 image2;
    using (Stream originalBinaryDataStream2 = new MemoryStream(data))
    {
        image2 = new Bitmap(originalBinaryDataStream2);
    }

    image2.Save(@"C:\temp\pewpew.jpg"); // This throws the GDI+ exception.
}
Run Code Online (Sandbox Code Playgroud)

有没有人对如何在关闭流的情况下保存图像有任何建议?我不能依赖开发人员记住在保存图像后关闭流.实际上,开发人员没有使用内存流生成映像的IDEA(因为它发生在其他地方的其他代码中).

我真的很困惑:(

c# gdi+ image exception

104
推荐指数
3
解决办法
9万
查看次数

在Python中将分号分隔的字符串拆分为字典

我有一个看起来像这样的字符串:

"Name1=Value1;Name2=Value2;Name3=Value3"
Run Code Online (Sandbox Code Playgroud)

Python中是否有一个内置的类/函数来接受该字符串并构造一个字典,就像我这样做了:

dict = {
    "Name1": "Value1",
    "Name2": "Value2",
    "Name3": "Value3"
}
Run Code Online (Sandbox Code Playgroud)

我查看了可用的模块,但似乎找不到匹配的东西.


谢谢,我确实知道如何自己制作相关的代码,但是因为这些小的解决方案通常是我的领域等待发生(即有人写道:Name1 ='Value1 = 2';)等等,所以我通常更喜欢一些预先测试功能.

我会自己做的.

python string dictionary split

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

Convert.ChangeType并转换为枚举?

Int16从数据库中获得了一个值,需要将其转换为枚举类型.不幸的是,这是在一个代码层中完成的,这些代码对于对象知之甚少,除了它可以通过反射收集的内容.

因此,它最终调用Convert.ChangeType失败,并出现无效的强制转换异常.

我找到了我认为有臭味的解决方法,如下所示:

String name = Enum.GetName(destinationType, value);
Object enumValue = Enum.Parse(destinationType, name, false);
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法,所以我不必通过这个String操作?

这是一个简短但完整的程序,如果有人需要进行实验,可以使用它:

using System;

public class MyClass
{
    public enum DummyEnum
    {
        Value0,
        Value1
    }

    public static void Main()
    {
        Int16 value = 1;
        Type destinationType = typeof(DummyEnum);

        String name = Enum.GetName(destinationType, value);
        Object enumValue = Enum.Parse(destinationType, name, false);

        Console.WriteLine("" + value + " = " + enumValue);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# enums changetype

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

好奇心:为什么编译时表达式<...>的运行速度比最小的DynamicMethod快?

我目前正在做一些最后的测量优化,主要是为了娱乐和学习,并发现了一些让我有几个问题的东西.

一,问题:

  1. 当我通过使用DynamicMethod在内存中构造一个方法并使用调试器时,在反汇编视图中查看代码时,有没有办法让我进入生成的汇编代码?调试器似乎只是为我提供了整个方法
  2. 或者,如果那是不可能的,我是否可能以某种方式将生成的IL代码作为程序集保存到磁盘,以便我可以使用Reflector检查它?
  3. 为什么Expression<...>我的简单加法方法(Int32 + Int32 => Int32)的版本比最小的DynamicMethod版本运行得更快?

这是一个简短而完整的程序.在我的系统上,输出是:

DynamicMethod: 887 ms
Lambda: 1878 ms
Method: 1969 ms
Expression: 681 ms
Run Code Online (Sandbox Code Playgroud)

我期望lambda和方法调用具有更高的值,但DynamicMethod版本一直慢约30-50%(变化可能是由于Windows和其他程序).谁知道原因?

这是程序:

using System;
using System.Linq.Expressions;
using System.Reflection.Emit;
using System.Diagnostics;

namespace Sandbox
{
    public class Program
    {
        public static void Main(String[] args)
        {
            DynamicMethod method = new DynamicMethod("TestMethod",
                typeof(Int32), new Type[] { typeof(Int32), typeof(Int32) });
            var il = method.GetILGenerator();

            il.Emit(OpCodes.Ldarg_0);
            il.Emit(OpCodes.Ldarg_1);
            il.Emit(OpCodes.Add);
            il.Emit(OpCodes.Ret);

            Func<Int32, Int32, Int32> f1 =
                (Func<Int32, Int32, Int32>)method.CreateDelegate(
                    typeof(Func<Int32, …
Run Code Online (Sandbox Code Playgroud)

c# profiling expression reflection.emit dynamicmethod

53
推荐指数
1
解决办法
2793
查看次数

发布到TestFlight,新测试者,我真的需要重建/下载我的配置文件吗?

我通过testflight网站发布了一个应用程序,允许我的同事进行测试,随着越来越多的人打开初始电子邮件并抽出时间完成注册过程,测试人员正在我的testflight团队中涓涓细流.

然而,将它们添加到测试中的过程看起来有点复杂,所以我想我会验证,并询问,我是否做得对,或者我是否遗漏了一些明显的东西.

目前整个过程看起来像这样:

  1. 一位同事打开了最初的电子邮件,其中包含邀请链接
  2. 然后他/她注册设备,并注册测试
  3. 我通过电子邮件和testflight网站通知了这位新的测试人员
  4. 然后我必须下载(或写下/复制)自上次以来所有新测试者的UDID列表
  5. 然后我必须访问Apple Developers站点的设备部分,并上传该文件
  6. 编辑我的配置文件以包含新设备
  7. 等待它批准,然后下载配置文件
  8. 我将配置文件拖到Xcode配置文件管理器中
  9. 然后我回到MonoDevelop,并确保它仍然指向正确的配置文件(我不知道使用MonoDevelop/MonoTouch是否使这个过程变得复杂,所以我不想把它留下来,这可能与这个问题无关)
  10. 我重建,并在testflight上重新发布
  11. 然后我访问testflight网站,找到新的/更新的版本,并确保我的所有测试人员都知道它

我注意到如果我不更新版本,它将"静默"替换现有版本,并重用已经通知的测试人员列表,所以如果我只是检查所有新测试人员并完成,它只会通知新的.

但是,使用配置文件文件继续下载和捣乱似乎有点工作.

我错过了一些明显的东西吗 有没有办法让我更容易做到这一点?

例如,我注意到我可以在Xcode组织器中创建配置文件,但是该对话框没有列出任何证书,因此我无法完成该对话框.如果这是一个关键因素,请留下一个简短的答案,我会转而重新提出一个新的问题.

这个问题只是:上述程序是否正确?

provisioning xamarin.ios ios testflight ios-provisioning

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

从C#打印堆栈跟踪信息

作为我们产品中某些错误处理的一部分,我们想要转储一些堆栈跟踪信息.但是,我们遇到许多用户只需截取错误消息对话框的屏幕截图,而不是向我们发送程序中可用的完整报告的副本,因此我想在此对话框中提供一些最小的堆栈跟踪信息.

我机器上的.NET堆栈跟踪如下所示:

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
at System.IO.StreamReader..ctor(String path)
at LVKWinFormsSandbox.MainForm.button1_Click(Object sender, EventArgs e) in C:\Dev\VS.NET\Gatsoft\LVKWinFormsSandbox\MainForm.cs:line 36
Run Code Online (Sandbox Code Playgroud)

我有这个问题:

格式看起来是这样的:

at <class/method> [in file:line ##]
Run Code Online (Sandbox Code Playgroud)

但是,atin关键字,我认为如果它们运行,比如挪威的.NET运行时而不是我安装的英文版,它们将被本地化.

有没有办法让我以语言中立的方式分离这个堆栈跟踪,这样我才能显示那些有这个条目的文件和行号?

换句话说,我想从上面的文字中获得这些信息:

C:\Dev\VS.NET\Gatsoft\LVKWinFormsSandbox\MainForm.cs:line 36
Run Code Online (Sandbox Code Playgroud)

您提供的任何建议都会有所帮助.

c# error-handling parsing stack-trace

51
推荐指数
4
解决办法
5万
查看次数

C#中具有未定义行为的代码

在C++中,有很多方法可以编写编译的代码,但会产生未定义的行为(维基百科).C#中有类似的东西吗?我们可以用编译的C#编写代码,但是有未定义的行为吗?

c# c++ undefined-behavior

50
推荐指数
4
解决办法
4080
查看次数

隐藏Visual Studio 2010(08)中右键单击上下文菜单中的项目?

源编辑器,项目项和解决方案项的右键单击上下文菜单变得非常漫长,其中两个甚至现在在我的1680x1050屏幕上滚动.

有没有办法让我隐藏这些菜单上的项目,即使我必须向Visual Studio宏系统添加一个事件并手动查找和隐藏它们?

这是一些例子,我从不使用这些物品中的许多物品:

上下文菜单

Edit1:当前答案+评论建议我应该使用工具栏上下文菜单中的Customize菜单项,转到第二个选项卡,Commands,然后使用Context Menus单选按钮并在那里找到相关菜单.

这里有3个,评论建议:

自定义上下文菜单

如你所见,它们都是空的.

编辑2:单击该对话框中的"全部重置"按钮后,对于"解决方案"和"项目"菜单,我在对话框中获得了可以编辑的项目,但更改并未影响项目或解决方案上的实际上下文菜单文件.此外,重新启动Visual Studio后,这两个对话框的内容再次为空.

contextmenu right-click visual-studio-2010

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