小编Avi*_*ion的帖子

我可以将python中的stdout重定向到某种字符串缓冲区吗?

我正在使用python ftplib来编写一个小的FTP客户端,但是包中的一些函数不返回字符串输出,而是打印到stdout.我想重定向stdout到一个对象,我将能够从中读取输出.

我知道stdout可以重定向到任何常规文件:

stdout = open("file", "a")
Run Code Online (Sandbox Code Playgroud)

但我更喜欢不使用本地驱动器的方法.

我正在寻找类似于BufferedReaderJava的东西,可用于将缓冲区包装到流中.

python redirect stdout stream

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

如何在Python中使用原始套接字?

我正在编写一个应用程序来测试网络驱动程序以处理损坏的数据.我想使用原始套接字发送这些数据,因此发送机器的TCP-IP堆栈不会纠正它.

我只在Linux上编写这个应用程序.我有在系统调用中使用原始套接字的代码示例,但我真的希望尽可能保持测试的动态,并在Python中编写大部分(如果不是全部的话).

我在网上搜索了一些关于在python中使用原始套接字的解释和示例,但是没有找到任何真正有启发性的东西.只是一个非常古老的代码示例来演示这个想法,但绝不是有效的.

从我收集的内容来看,Python中的Raw Socket使用在语义上几乎与UNIX的原始套接字完全相同,但没有struct定义数据包结构的s.

我想知道在Python中编写测试的原始套接字部分是否更好,但在C中使用系统调用,并从主Python代码调用它?

python sockets raw-sockets

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

在 iOS 14 中,Interface Builder 中设置的 UITextField backgroundColor 在运行时为零

我有一个可以在 iOS 11-13 上正常运行的应用程序,但是当我在 iOS 14 中运行它时,其中的几个文本字段都呈现为 nil 且如此透明的背景色,即使背景色在界面生成器。

我在代码中看不到任何使用那些可能会弄乱背景颜色的文本字段的地方,并且在相同场景下运行的这些相同 UITextFields 在 iOS 13 及更低版本上显示为白色背景。

如果我在代码中明确设置颜色,则在 iOS 14 中一切正常

nameTextField.backgroundColor = .white
Run Code Online (Sandbox Code Playgroud)

我不想添加冗余代码只是为了重置背景颜色。关于 iOS 14 中的新 UITextField 行为,我可能遗漏了什么吗?

uitextfield uikit ios14

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

Python中不准确的对数

我每天都在我的公司用Python 2.4工作.我使用了标准数学库中的多功能对数函数'log',当我输入log(2**31,2)时,它返回31.000000000000004,这让我感到有点奇怪.

我用2的其他力量做了同样的事情,它完美地运作了.我跑了'log10(2**31)/ log10(2)',我得到了一轮31.0

我尝试在Python 3.0.1中运行相同的原始函数,假设它是在更高级的版本中修复的.

为什么会这样?Python中的数学函数有可能存在一些不准确之处吗?

python math floating-point

9
推荐指数
4
解决办法
6324
查看次数

我应该像C++一样优化我的python代码吗?有关系吗?

我和一位同事讨论过有效编写python的问题.他声称虽然你正在编写python,你仍然需要尽可能地优化软件的一点点,就像你在C++中编写一个有效的算法一样.

像:

  • 在一个if声明中,or总是把条件最有可能先失败,所以第二个不会被检查.
  • 使用最有效的函数来操作常用的字符串.不是研磨字符串的代码,而是简单的事情,比如进行连接和分割,以及查找子字符串.
  • 尽可能少地调用函数,即使它以牺牲可读性为代价,因为它会产生开销.

我说,在大多数情况下,这并不重要.我还应该说,代码的背景不是超高效的NOC或导弹制导系统.我们主要是在python中编写测试.

你对此事有何看法?

python performance

5
推荐指数
3
解决办法
741
查看次数

在Windows Server 2003上使用python密钥环时出现错误1312

我正在python中编写Windows服务,我正在使用密钥环模块来安全地存储我需要定期和持久使用的凭据.这意味着密钥环使用本地系统用户凭据存储密码.

我所做的就是使用2个基本的密钥环功能:get_password(SERVICE_NAME, username, password)set_password(SERVICE_NAME, username).我没有按照我的理解预配置密钥环,并且看到它自动配置其后端.

当我在Windows Server 2008及更高版本上运行时,一切运行顺利.但是当我在Windows Server 2003上运行它时,我得到了这个令人讨厌的错误:

error: (1312, 'CredWrite', 'A specified logon session does not exist. It may already have been terminated.')

我认为它与用于运行我的服务的本地系统用户的登录会话有关,虽然它很奇怪,因为我知道它是一种超级管理员 - 超级用户的形式,应该有权做任何事情它想要在系统中.但是,当我将用户的登录凭据更改为本地管理员时,一切都顺利进行.

我的服务配置是否需要更改才能使其正常工作?或者更改本地系统用户的安全策略?或者我应该要求用户使用本地管理员凭据运行此服务?

python windows-services python-keyring

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

当我读取属性时调用WillSet

我在Swift 2中有一个奇怪的情况,在某种情况下,当我引用一个属性时,属性的set观察者被调用.

以下代码示例说明了此问题:

var i = 0

protocol PropertyProtocol {
  var name: String { get }
}

class PropertyType: PropertyProtocol {
  var name = "Bob"
}

class AggregateType {
  var prop: PropertyProtocol! {
    willSet {
      i += 1
      print("a set will be done")
    }
  }
}

let a = AggregateType()
i                          // i = 0, since prop was not set.
a.prop = PropertyType()
i                          // i = 1, since prop was just set.

// This is where it …
Run Code Online (Sandbox Code Playgroud)

swift

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

Firebase 函数初始 Hello World 无法在 TS 中编译

我有一个托管在 Firebase 中的现有 webapp 项目,我想向其中添加云功能。但是,当我仅使用该命令运行时,firebase init functions由于 gRPC 节点模块中的错误,它生成的初始 hello-world 模板无法在 TypeScript 中编译。

\n

我的文件夹结构:

\n
firebase\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .firebaserc\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 firebase.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 webapp     // My web app. Compiles and runs well.\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 functions  // Only what was autogenerated by firebase-tools.\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .eslintrc.js\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tsconfig.dev.json\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 index.ts\n
Run Code Online (Sandbox Code Playgroud)\n

我做了什么

\n

在我的firebase根文件夹中,我运行firebase init functions并选择了正确的项目,使用 TypeScript,具有默认的 ESLint 定义,并安装软件包。

\n

我注释掉了 中的 Hello World 函数functions/src/index.ts

\n

我正在使用最新的 Node …

firebase typescript firebase-tools google-cloud-functions grpc-node

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

相同的错误代码

我在Linux上使用python 2.4.1,在我工作的公司内部编写python包,用于在两台主机之间建立连接以进行测试.

在建立连接时,定义为客户端的一方在socket.connect使用错误代码111使用正确的参数(我已检查)进行调用时失败.在网上搜索此错误意味着,我了解到这意味着连接被主动拒绝.

但是用于建立连接的包中的代码应该处理它,只有它知道10061作为同一错误的错误代码:连接被拒绝.

可能是因为相同的逻辑错误存在相同的错误代码吗?可能是111是Linux操作系统的系统错误,因为10061是python甚至是另一个操作系统?即便如此,错误代码的整个概念不是用相同的代码统一逻辑错误吗?

我应该简单地将111错误代码添加到处理条件中吗?

python sockets error-handling

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