小编Ada*_*erg的帖子

在Python中将函数取消到不同的上下文中

我已经为我们在工作场所内部开发/使用的以流程为中心的作业分发系统编写了一个Python接口.虽然技术娴熟的程序员,使用此界面的主要人员是研究科学家,而不是软件开发人员,因此易于使用并尽可能地保持界面不受影响是至关重要的.

我的库将一系列输入展开到共享文件服务器上的一系列pickle文件中,然后生成加载这些输入,执行计算,pickle结果和退出的作业; 然后客户端脚本选择备份并生成一个生成器,该生成器加载并生成结果(或重新生成计算函数所执行的任何异常.)

这只是有用的,因为计算函数本身就是序列化输入之一.cPickle非常满足于pickle函数引用,但要求pickle函数在相同的上下文中可重新导入.这是有问题的.我已经解决了找到重新导入模块的问题,但绝大多数时候,它是一个顶级函数被腌制,因此没有模块路径.我发现能够在计算节点上取消这样一个函数的唯一策略是这种令人作呕的小方法,用于模拟在取消函数之前对函数进行pickle的原始环境:

...
# At this point, we've identified the source of the target function.
# A string by its name lives in "modname".
# In the real code, there is significant try/except work here.

targetModule = __import__(modname)
globalRef = globals()
for thingie in dir(targetModule):
    if thingie not in globalRef:
        globalRef[thingie] = targetModule.__dict__[thingie]

# sys.argv[2]: the path to the pickle file common to all jobs, which contains
# any data in common to all invocations of the target …
Run Code Online (Sandbox Code Playgroud)

python serialization pickle

10
推荐指数
1
解决办法
1202
查看次数

java.net.URLConnection.guessContentTypeFromStream和text/plain

所有,

我试图识别带有Mac行结尾的纯文本文件,并在InputStream中静默地将它们转换为Windows或Linux行结尾(重要的部分是LF字符,真的).具体来说,我正在使用几个采用InputStreams的API,并且很难锁定以寻找\n作为换行符.

有时,我得到二进制文件.显然,一个不像文本的文件不应该进行这种替换,因为碰巧对应于\ r的值显然不能静默地跟随\n而不会严重损坏事物.

我试图使用java.net.URLConnection.guessContentTypeFromStream并仅在类型为text/plain时执行endline转换.不幸的是,"text/plain"它似乎没有回归价值; 我得到的只是null我的平面文本文件,并且假设所有无法识别的文件都可以修改可能并不安全.

我可以使用哪个更好的库(最好是在公共Maven存储库和开源中)来执行此操作?或者,我如何让guessContentTypeFromStream为我工作?我知道我正在描述一个本质上危险的应用程序,并且没有任何解决方案可以完美,但我应该将"null"视为"text/plain",我只需要自己编写更多代码来寻找证据证明它不是"T?

java text urlconnection mime-types

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

标签 统计

java ×1

mime-types ×1

pickle ×1

python ×1

serialization ×1

text ×1

urlconnection ×1