Articles of python

削减uuid进一步做短串

我需要为给定的唯一字符串生成唯一的记录ID。 我尝试使用uuid格式似乎很好。 但我们觉得这很长。 所以我们需要将uuid字符串9f218a38-12cd-5942-b877-80adc0589315减少到更小。 通过删除’ – ‘我们可以节省4个字符。 从uuid中删除最安全的部分是什么? 我们不需要普遍唯一的id,但我们喜欢使用uuid作为源,但减少了字符串。 我们需要特定于站点/数据库的唯一ID(SQL Server / ADO.NET数据服务)。 任何语言的任何想法或样本都可以 提前致谢

在C#中实现方法装饰器

在python中可以实现function decorators来扩展函数和方法的行为。 特别是我正在将设备库从python迁移到C# 。 与设备的通信可能会产生错误,应该使用自定义exception重新启动。 在python我会这样写: @device_error_wrapper(“Device A”, “Error while setting output voltage.”) def set_voltage(self, voltage): “”” Safely set the output voltage of device. “”” self.__handle.write(“:source:voltage:level {0}”.format(voltage)) 此方法调用将扩展为 try: self.__handle.write(“:source:voltage:level {0}”.format(voltage)) except Error: raise DeviceError(“Error while setting output voltage.”, “DeviceA”) 使用此模式,您可以轻松地包装和扩展方法,而无需在每个方法中编写每个try-except子句。 是否可以使用C#实现类似的模式? 如果需要实现装饰器( device_error_wrapper ),请告诉我。

IronPython:意外的令牌’来自’

我使用IronPython从.net运行python脚本,下面是我的python脚本 import tensorflow as tf print(‘Tensorflow Imported’) 下面是C#代码 using System; using System.Text; using System.IO; using IronPython.Hosting; using System.Collections.Generic; using Microsoft.Scripting.Hosting; namespace ConsoleApplication1 { class Program { private static void Main() { var py = Python.CreateEngine(); List searchPaths = new List(); searchPaths.Add(@”C:\Users\Admin\AppData\Local\Programs\Python\Python35\Lib)”); searchPaths.Add(@”C:\Users\Admin\AppData\Local\Programs\Python\Python35\Lib\site-packages)”); py.SetSearchPaths(searchPaths); try { py.ExecuteFile(“script.py”); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } […]

在不编写文件的情况下在Python和C#之间传递数据

我想在Python和C#之间传递二进制信息。 我假设您可以打开一个标准的输入/输出通道,并像文件一样读写,但是有很多可移动的部分,而且我不太了解C#。 我想做这种事情,但不写文件。 # python code with open(DATA_PIPE_FILE_PATH, ‘wb’) as fid: fid.write(blob) subprocess.Popen(C_SHARP_EXECUTABLE_FILE_PATH) with open(DATA_PIPE_FILE_PATH, ‘rb’) as fid: ‘Do stuff with the data’ // C# code static int Main(string[] args){ byte[] binaryData = File.ReadAllBytes(DataPipeFilePath); byte[] outputData; // Create outputData File.WriteAllBytes(outputData) 我已经尝试了几种使用标准输入/输出的不同方法,但我没有运气匹配它们,就像我说的那样,有许多活动部件。 我尝试过类似的东西 p = subprocess.Popen(C_SHARP_EXECUTABLE_FILE_PATH, stdin=subprocess.PIPE, stdout=subprocess.PIPE) p.stdin.write(blob) p.stdin.close() 要么 p = subprocess.Popen(C_SHARP_EXECUTABLE_FILE_PATH, stdin=subprocess.PIPE, stdout=subprocess.PIPE) […]

什么是部分课程?

它是什么以及如何在C#中使用。 你能在Python / Perl中使用相同的概念吗?

C#:python try / catch / else块的等价物

在Python中,有一个有用的exception处理代码: try: # Code that could raise an exception except Exception: # Exception handling else: # Code to execute if the try block DID NOT fail 我认为能够将可能引发的代码与普通代码分开是很有用的。 在Python中,这可能如上所示,但是我在C#中找不到类似的东西。 假设该特征或类似特征不存在,将标准代码放入try块或catch块之后是标准做法吗? 我问的原因是因为我有以下代码: if (!IsReadOnly) { T newobj; try { newobj = DataPortal.Update(this); List keys = new List(BasicProperties.Keys); foreach (string key in keys) { BasicProperties[key] = newobj.BasicProperties[key]; } […]

使用C#,BouncyCastle和导入的RSA密钥进行RSA签名和validation – 内部使用Python示例和非工作C#代码示例

我一直在试着用C#和BouncyCastle工作来解决RSA数据签名和validation的一个小例子。 RSACryptoServiceProvider.VerifyHash()总是在一个适用于Python和M2Crypto的示例中返回false。 我已经validation了工作示例和C#示例之间的哈希签名是相同的,它就在那里我被卡住了。 我觉得我错过了一些重要的细节。 工作的Python代码和非工作的C#代码如下。 关键是生成的 openssl genrsa -out testkey.pem 1024 openssl rsa -in testkey.pem -pubout > testkey.pub Python代码(工作): private = “””—–BEGIN RSA PRIVATE KEY—– MIICXQIBAAKBgQCxSHbp1ID/XHEdzVzgqYR1F/79PeMbqzuKNZChvt1gFObBhKyB pgaHDHw3UZrO8s/hBEE/Mpe2Lh90ZAFdPIXq+HyVoznXMoJYBv0uLDApvSQbJNOd f7T5VwmpBbkfj1NAlm39Eun9uBSokEOnB24g+bczPQPGOASrQ2Ly9afOZQIDAQAB AoGBAIEzQIZ1OnXgVwfTLMcGg+QaUtkYizUU+9Vj6D4YrZliYjHSkS4DY2p0rOpb 7Ki5yMpCoZJ/OpWo03+tilj6zNUU6X3aHrPPSv8jcsE0sDi9zYJr/Ztk3EG23sad bM28Bb4fV/Z0/E6FZJrmuvI2dZP/57oQSHGOhtkHFO21cW5BAkEA3l/i5Rc34YXc WHYEsOYe0kAxS4dCmhbLWaWvsghW/TomjdxzePsO70GZZqRMdzkfA1iS1OrK+pP4 4suL2rSLrQJBAMwXFnBp4Jmek0CTSxoYf6q91eFm/IRkGLnzE1fEZ76vQOBTas8T /mpjNQHSEywo/QB62h9A8hy7XNrfZJAMJJkCQA5TYwybKFBxDTbts3Op/4ZP+F0D Q7klisglsmHnw6Lgoic1coLyuY2UTkucfgiYN3VBuYPZ9GWcLsZ9km7ufqkCQQCz NVa70Qyqd+cfXfcla/u2pskHCtKTQf3AUmRavhjHBMa39CemvAy7yG9EMP4q2bcH U9jydqnidtdbTavVHQSJAkA0zJtLzHGPtQqQaI7K6kBDXYPqloGnQxHxad0HPx2e Vj2qv1tEsqeG6HC7aL/afXOtxcfjq4oMHbGUjDv+dGfP —–END RSA PRIVATE KEY—–“”” public = “””—–BEGIN PUBLIC KEY—– MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxSHbp1ID/XHEdzVzgqYR1F/79 PeMbqzuKNZChvt1gFObBhKyBpgaHDHw3UZrO8s/hBEE/Mpe2Lh90ZAFdPIXq+HyV oznXMoJYBv0uLDApvSQbJNOdf7T5VwmpBbkfj1NAlm39Eun9uBSokEOnB24g+bcz PQPGOASrQ2Ly9afOZQIDAQAB —–END PUBLIC KEY—–“”” message […]

读取文件特定行号的有效方法。 (奖金:Python手册错误打印)

我有一个100 GB的文本文件,这是一个来自数据库的BCP转储。 当我尝试用BULK INSERT导入它时,我在行号219506324上得到了一个神秘的错误。在解决这个问题之前我想看看这行,但是我最喜欢的方法是 import linecache print linecache.getline(filename, linenumber) 抛出MemoryError 。 有趣的是,手册说 “这个函数永远不会抛出exception。” 在这个大文件中,当我尝试读取第1行时,它会抛出一个,我有大约6GB的可用RAM … 我想知道到达那条无法到达的线路最优雅的方法是什么。 可用的工具是Python 2,Python 3和C#4(Visual Studio 2010)。 是的,我明白我总能做点什么 var line = 0; using (var stream = new StreamReader(File.OpenRead(@”s:\source\transactions.dat”))) { while (++line < 219506324) stream.ReadLine(); //waste some cycles Console.WriteLine(stream.ReadLine()); } 哪个会奏效,但我怀疑这是最优雅的方式。 编辑:我正在等待关闭此线程,因为包含该文件的硬盘正在被另一个进程使用。 我将测试建议的方法和报告时间。 谢谢大家的建议和意见。 结果是我实施了Gabes和Alexes方法来查看哪一个更快。 如果我做错了什么,请告诉我。 我正在使用Gabe建议的方法在我的100GB文件中使用第10百万行,然后使用Alex建议的方法,我将其松散地翻译成C#…我自己添加的唯一内容是,首先阅读300 MB文件到内存只是为了清除硬盘缓存。 const string file = […]

使用IronPython在C#中运行特定的Python函数

到目前为止,我有一个简单的类包装python引擎(IronPython)供我使用。 虽然代码看起来很大,但它非常简单,所以我在这里复制它以便更清楚地解决我的问题。 这是代码: public class PythonInstance { ScriptEngine engine; ScriptScope scope; ScriptSource source; public PythonInstance() { engine = Python.CreateEngine(); scope = engine.CreateScope(); } public void LoadCode(string code) { source = engine.CreateScriptSourceFromString(code, Microsoft.Scripting.SourceCodeKind.Statements); source.Compile(); } public void SetVariable(string key, dynamic variable) { scope.SetVariable(key, variable); } public void RunCode() { source.Execute(scope); } public void CallFunction(string function) { […]

免费加密库

什么是最稳定和最有用的密码学库,它们是: 用/写的python,c ++,c#,。net opensource,GNU或其他免费许可