在Android下运行的Java应用程序中有没有办法确定应用程序的进程ID("PID")?
我想要这个的原因是我正在编写一个从logcat读取和处理行的应用程序,我希望能够忽略这个应用程序自己编写的所有logcat行.
我知道我可以通过在所有Log.*()调用中为我的应用程序使用唯一标记,然后忽略带有此标记的logcat行来实现此目的,但在我看来,如果我可以简单地忽略所有logcat行,它会更清晰这是由我自己的应用程序的PID编写的.
我已经搜索过,但是我找不到任何解释如何从该应用程序本身确定正在运行的Android应用程序的PID的内容.
提前感谢任何有关文档的建议或指示.
许多在线python示例显示了在每行之前具有正常前导">>>"和"..."字符的交互式python会话.
通常,如果不获取这些前缀,则无法复制此代码.
在这些情况下,如果我想在复制后将此代码重新粘贴到我自己的python解释器中,我必须做一些工作来首先剥离这些前缀.
有没有人知道如何让python或iPython(或任何其他python解释器)自动忽略粘贴的行上的前导">>>"和"..."字符?
例:
>>> if True:
... print("x")
...
Run Code Online (Sandbox Code Playgroud) 我知道我可以使用io.StringIO或io.BytesIO返回一个可以写入和读取的打开文件句柄。
但是,我正在寻找一种方法,使内存区域看起来像尚未打开的命名磁盘文件。
我想要这个的原因是因为有一些例程将磁盘文件的名称作为参数,然后这些例程打开文件并对其进行操作。在某些情况下,我希望这些例程的输入或输出是内存缓冲区,而不是磁盘文件,对于这些例程,我无法传递已经打开的文件句柄。
例如,一个这样的例程是Image.save()from PIL,它需要一个路径名作为它的参数,而不是一个已经打开的文件句柄。使用该例程时,我希望将图像数据直接保存到内存缓冲区,而不执行任何中间文件 IO。还有许多其他例程将路径名作为参数,我希望它们具有相同的行为。
有什么办法可以在python中实现这一点吗?
我想一直在完全扎根的Android M设备上完全禁用deviceidle模式(“打ze”)。是的,我知道这会影响我的电池寿命,这对我来说很好。
我知道我可以调用以下内容:
dumpsys deviceidle disable
Run Code Online (Sandbox Code Playgroud)
但是,我无法找到该子命令的详细文档。它是否确实在我的设备上完全永久性地禁用了“打“”功能(或至少直到下一次启动),还是执行了其他一些相关功能?
如果该“ dumpsys deviceidle disable”命令不是永久禁用“ Doze”的方法,是否还有其他方法可以通过Android Java API?实际上,如果存在,那么Java-API解决方案将是理想的。
使用 numpy 时,假设我有一个任意的、以前创建的ndarray名为my_ndarray. 如果可能的话,我希望能够执行以下操作...
my_bytes = my_ndarray.tobytes()
new_ndarray = ## ... somehow convert `my_bytes` back to a `nympy.ndarray`
## ... such that `my_ndarray` and `new_ndarray` are equal
assert(numpy.equal(my_ndarray, new_ndarray)) # I expect this to succeed
Run Code Online (Sandbox Code Playgroud)
有什么方法可以反序列化通过返回到一个有意义的特别创建的东西吗?tobytes()ndarray
还是我不得不使用其他形式的序列化/反序列化?
我想将字典转换为JSON字符串,其中布尔True值转换为数字1,布尔False值转换为数字0.我正在使用一个JSONEncoder子类,但它似乎忽略了布尔...
import json
class MyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, bool):
return 1 if obj else 0
return super().default(obj)
data = { 'key-a' : 'a', 'key-true' : True, 'key-false' : False }
jsondata = json.dumps(data, cls=MyEncoder)
print(jsondata)
Run Code Online (Sandbox Code Playgroud)
我希望这是结果:
{"key-true": 1, "key-a": "a", "key-false": 0}
Run Code Online (Sandbox Code Playgroud)
但是,这就是我得到的:
{"key-true": true, "key-a": "a", "key-false": false}
Run Code Online (Sandbox Code Playgroud)
我知道我可以在传递之前以编程方式修改数据json.dumps,但是有什么办法可以通过JSONEncoder子类获得我想要的结果吗?
假设我正在使用像 bash 或 zsh 这样的 shell,并且还假设我有一个写入标准输出的命令。我想将命令的输出捕获到一个 shell 变量中,并将命令的返回码捕获到另一个 shell 变量中。
我知道我可以做这样的事情......
command >tempfile
rc=$?
output=$(cat tempfile)
Run Code Online (Sandbox Code Playgroud)
然后,我在 'rc' shell 变量中有返回码,在 'output' shell 变量中有命令的输出。
但是,我想在不使用任何临时文件的情况下执行此操作。
另外,我可以这样做来获取命令输出......
output=$(command)
Run Code Online (Sandbox Code Playgroud)
...但是,我不知道如何将命令的返回码放入任何 shell 变量中。
任何人都可以提出一种在不使用任何文件的情况下将返回码和命令的输出都放入两个 shell 变量的方法吗?
非常感谢。
在python类的实例方法中,我知道我们可以通过获取类名 self.__class__.__name__
但是,我想将类的名称存储在类变量中,而不编写类的名称.
我知道我可以这样做以将类的名称转换为类变量:
class MyClass(object):
pass
MyClass._myname = MyClass.__name__
Run Code Online (Sandbox Code Playgroud)
但是,我必须MyClass在类定义之外对字符串进行两次编码,只是为了将类名称转换为类变量.在这种情况下,那将是"MyClass",我可以简单地编码如下:
class MyClass(object):
_myname = "MyClass"
Run Code Online (Sandbox Code Playgroud)
但即使这是多余的,因为我必须"MyClass"在MyClass课堂上进行硬编码.
我想要的是以某种方式将类的名称放入类变量而不编写类的名称,如下所示:
class MyClass(object):
_myname = ???? # where ???? is a statement which returns the class
# name, in which the string "MyClass" does not appear
Run Code Online (Sandbox Code Playgroud)
这甚至可能吗?
我有一个电子表格,我想通过 LibreOffice Calc 和 Excel 访问该电子表格。我将电子表格保存为.xls文件,当我在这两个程序中打开它时,大部分内容的工作方式相同。
但是,如果我想要一个引用工作表“XYZ”上的单元格“A1”的公式,我必须在 Excel 中将其编码为=XYZ!A1,在 LibreOffice Calc 中将其编码为=XYZ.A1。
这会阻止我在想要在 LibreOffice Calc 和 Excel 中访问的任何电子表格中使用此类工作表引用。
有谁知道一种在 LibreOffice Calc 和 Excel 中都可以使用的单元格工作表引用编码方法?
在以下期望脚本中,您可以看到我正在尝试匹配正则表达式".*".该匹配成功,但$ expect(0,字符串)仍未设置.我究竟做错了什么?
首先,脚本(在一个名为/ usr/local/bin/py的文件中)......
#!/usr/bin/expect -d
log_user 1
exp_internal 1
match_max 100000
spawn /usr/bin/python3
set prompt "(>>>|\\.\\.\\.) "
set anythingElse ".+"
expect {
-re $prompt {
send_user -- $expect_out(0, string)
expect_user -re "((>>>|\\.\\.\\.) )?(.*)\n"
send -- $expect_out(3, string)
send -- "\n"
exp_continue
}
-re $anythingElse {
set x $expect_out(0, string)
send_user -- $x
exp_continue
}
eof {
exit 0
}
}
Run Code Online (Sandbox Code Playgroud)
现在,这是输出.请注意,失败位于"set x ..."行:
expect version 5.45
argv[0] = /usr/bin/expect argv[1] = -d argv[2] = /usr/local/bin/py
set argc 0
set …Run Code Online (Sandbox Code Playgroud) 我知道如何使用email.utils.parseaddr()来解析电子邮件地址.但是,我想解析多个电子邮件地址的列表,例如此标头的地址部分:
Cc: "abc" <foo@bar.com>, "www, xxyyzz" <something@else.com>
Run Code Online (Sandbox Code Playgroud)
一般来说,我知道我可以拆分正则表达式\s*,\s*来获取单个地址,但在我的示例中,其中一个地址的名称部分包含逗号,因此此正则表达式将错误地拆分标题.
我知道如何手动编写基于状态机的代码以正确地将该地址拆分成片段,并且我也知道如何编写与每个电子邮件地址匹配的复杂正则表达式.我不是在写这样的代码时请求帮助.相反,我想知道是否有任何现有的python模块可以用来正确拆分这个电子邮件地址列表,所以我不必"重新发明轮子".
先感谢您.