对于字符t和值root,会发生这种情况.相当令人困惑
$ echo [s]
[s]
$ echo [t]
t
$ echo [ t ]
[ t ]
$ echo [root]
t
Run Code Online (Sandbox Code Playgroud) 正如提到这个StackOverflow的问题,你都不允许有任何尾随逗号JSON.例如,这个
{
"key1": "value1",
"key2": "value2"
}
Run Code Online (Sandbox Code Playgroud)
很好,但是这个
{
"key1": "value1",
"key2": "value2",
}
Run Code Online (Sandbox Code Playgroud)
是无效的语法.
由于其他StackOverflow问题中提到的原因,在Python代码中使用尾随逗号是合法的(也许是鼓励?).我正在使用Python和JSON,所以我希望能够在两种类型的文件中保持一致.有没有办法json.loads
忽略尾随逗号?
我正在查看一些带有两个__import__
语句的代码,第二个__import__
语句不起作用,除非第一个语句已经运行.
目录结构如下:
dir1
|-__init__.py
|-subdir1
| |-__init__.py
| |-file1.py
| |-file2.py
|
|-subdir2
|-__init__.py
|-file1.py
|-file2.py
Run Code Online (Sandbox Code Playgroud)
代码有两个__import__
声明:
m = __import__('dir1.'+subdir1, fromlist=[file1])
...
m = __import__(file2, fromlist=[class_inside_file2])
Run Code Online (Sandbox Code Playgroud)
第一个是有道理的 - 它大致相当于做
from dir1.subdir1 import file1
Run Code Online (Sandbox Code Playgroud)
但允许动态提供子目录和文件.这是第二个声明,我不明白它为何起作用.它看起来应该相当于
from file2 import class_inside_file2
Run Code Online (Sandbox Code Playgroud)
这不应该作为工作file2.py
中subdir1
,但我的当前工作目录是上面两个层次.此外,所有__init__.py
文件都是空的.
正如您所料,第二个import语句失败,ImportError
如果它自己运行.但是,在第一个import语句运行后,第二个工作正常.为什么?
我正在开发一个运行 CentOS (Linux) 的机器,当尝试访问特定子域进行工作时遇到以下错误:
Traceback (most recent call last):
... # My code, relevant call is requests.get(url)
File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 60, in get
return request('get', url, **kwargs)
File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 49, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 457, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 569, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/site-packages/requests/adapters.py", line 420, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Run Code Online (Sandbox Code Playgroud)
根据https://www.digicert.com/help/,子域“没有发送所需的中间证书”(这是 DigiCert 发现的唯一问题)。然而,当我从 Mac …
我想在Ingress规则的路径中使用正则表达式,但我无法让它工作.例如:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cafe-ingress
spec:
tls:
- hosts:
- cafe.example.com
secretName: cafe-secret
rules:
- host: cafe.example.com
http:
paths:
- path: /tea
backend:
serviceName: tea-svc
servicePort: 80
- path: /coffee
backend:
serviceName: coffee-svc
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
我尝试/t[a-z]a
了第一条路径,但是我试过的任何路径都应该匹配正则表达式,这使我进入默认后端而不是我预期的服务.
注意:我正在使用nginx入口控制器,它应该能够支持正则表达式.
是否有Queue
在with
语句中使用 Python 的标准方法?这就是我希望能够使用它的方式:
import Queue
myqueue = Queue.Queue()
...
...
...
with myqueue as nextItem:
doStuff(nextItem)
Run Code Online (Sandbox Code Playgroud)
对象没有__enter__
or__exit__
方法Queue
,所以这不起作用。有没有什么语法糖可以让它看起来比这更好?
import Queue
myqueue = Queue.Queue()
...
...
...
try:
nextItem = myqueue.get()
doStuff(nextItem)
finally:
myqueue.task_done()
Run Code Online (Sandbox Code Playgroud)
编辑:我想with
在这种情况下使用语句有两个原因。首先,我认为with
语句可以帮助我的代码更简洁一些,尤其是当不止一次调用doStuff
. 其次,拥有一些简单的东西会很好,我可以养成每次使用的习惯,以确保我不会忘记调用task_done
或遇到错误可能导致调用被跳过的情况。
我有一个 Python 程序有时会由于“双重释放或损坏”错误而崩溃。我试图找出发生这种情况的地方(可能在我正在使用的众多库之一中),以便我可以防止它崩溃。为此,我启用了核心转储,现在我有一个可以使用的 Apport.crash
文件。
这就是我被困的地方。如何将核心转储加载到 gdb 或其他可以让我看到任何可用堆栈跟踪信息的东西?
apport-retrace 看起来很棒,但不会加载,因为.crash
文件中没有包:
ERROR: report file does not contain one of the required fields: CoreDump DistroRelease Package ExecutablePath
Run Code Online (Sandbox Code Playgroud)
我也不知道如何将它直接加载到 gdb 中。我已经尝试gdb /usr/bin/python <crashfile>
过完整.crash
文件、文件的“CoreDump”部分以及“CoreDump”部分的.crash
base64 解码版本。每次我收到此错误时:
<crashfile> is not a core dump: File format not recognized
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以在不需要包的情况下使用 apport-retrace 或者以 gdb 可以使用的方式从崩溃文件中提取核心转储?
场景 - 我有一个正在分配任务的进程池。但是,如果子进程在运行任务时被终止,则该AsyncResult
对象永远不会被标记为就绪。我希望发生的情况是它会被标记为就绪但不成功。
要重现这一点:
>>> import multiprocessing
>>> import time
>>> p = multiprocessing.Pool(processes=1)
>>> result = p.apply_async(time.sleep, args=(1000,))
>>> result.ready()
False
Run Code Online (Sandbox Code Playgroud)
在另一个 shell 中,找到进程 ID 并将其杀死。
>>> result.ready()
False
>>> result.wait(5) # Waits 5 seconds even though subprocess is dead
Run Code Online (Sandbox Code Playgroud)
这是一个问题,因为我有一个线程正在等待作业完成,并且它通常有相当长的超时。如何让result.wait(timeout)
通话结束而不需要等待超时?另外,我如何判断它已被放弃,而不仅仅是任务仍在运行但我们已达到超时?
我正在处理一个 Java 项目,该项目使用的库依赖于具有安全漏洞的库。不幸的是,该漏洞库的更新版本没有相同的组。基本上,该库org.reallyuseful.library:usefulstuff:1.0
依赖于org.vulnerable.dependency:dependency:1.0
,但该漏洞已在 中修复org.secure.dependency:dependency:1.1
。
在 Gradle 中,我如何告诉usefulstuff:1.0
使用org.secure.dependency:dependency:1.1
而不是org.vulnerable.dependency:dependency:1.0
?
我有一个python(版本2.7.6)程序,截至昨晚已经运行了一两天,当时它报告了一些错误。但是,堆栈跟踪明显是错误的。假装我的代码是这样的:
def do_A():
do_some_stuff()
do_B()
def do_B():
do_some_IO_that_could_fail()
def do_C():
if len('abc'):
do_D()
def do_D():
do_other_stuff()
if __name__ == '__main__':
do_A()
Run Code Online (Sandbox Code Playgroud)
可以失败的任务确实失败了,但是我的堆栈跟踪如下:
Traceback (most recent call last):
File "myfile.py", line 16, in <module>
do_A()
File "myfile.py", line 9, in do_A
if len('abc'):
File "myfile.py", line 13, in do_B
do_other_stuff()
CustomFailureException: "The thing that can fail? It failed."
Run Code Online (Sandbox Code Playgroud)
在我的堆栈跟踪中,“ in ...”部分是合理的,因为它们描述了实际上可以到达我的代码中具有的部分的路径CustomFailureException
。行号和它显示的代码是一致的(即说第9行,并且代码在第9行),但这是错误的行。
有谁知道我的堆栈跟踪如何发生?
注意:此特定任务每天晚上运行,并且已经运行了一段时间。它通常成功完成,但是之前失败并给出了正常的堆栈跟踪。昨晚,它始终失败,并始终给出相同的错误堆栈跟踪。
这是我如何使用 a 的示例NamedParameterJdbcTemplate
:
SqlParameterSource params = new MapSqlParameterSource("column1", value1)
.addValue("column2", value2)
.addValue("column3", value3);
List<String> values = namedParameterJdbcTemplate.query("SELECT column4 FROM my_table WHERE column1=:column1 and column2=:column2 and column3=:column3", params, (rs, numRow) -> {
return rs.getString("column4");
});
Run Code Online (Sandbox Code Playgroud)
这通常工作得很好,但我有一个value2
可以为空的情况。然后它不起作用,因为无法正常比较 null。
我如何namedParameterJdbcTemplate
处理我正在寻找空值的情况?
需要明确的是,要使 SQL 查询正确,它需要评估为WHERE ... and column2 is null ...
而不是 WHERE ... and column2=null
.
我最近发现了一些有趣的行为让我想知道对象如何知道存在哪些全局变量.例如,假设我有一个文件"test.py":
globalVar = 1
toDelete = 2
class Test(object):
classVar = 3
def runTest1(self):
print globalVar
print toDelete
print missingVar
def runTest2(self):
print self.classVar
print toCreate
print missingVar
Run Code Online (Sandbox Code Playgroud)
然后在交互式shell中我这样做:
>>> import test
>>> tester = test.Test()
>>> tester.runTest1()
1
2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "test.py", line 10, in runTest1
print missingVar
NameError: global name 'missingVar' is not defined
>>> tester.runTest2()
3
Traceback (most recent call last):
File "<stdin>", line 1, in <module> …
Run Code Online (Sandbox Code Playgroud) python python-module global-variables python-import python-2.7
假设我有以下变量:
x
y
Run Code Online (Sandbox Code Playgroud)
和功能:
def runx(x):
print(x)
def runy(y):
print (y)
def runxy(x, y):
print(x + y)
def nonexy():
print('none')
Run Code Online (Sandbox Code Playgroud)
什么是基于下一个要求选择函数的Pythonic方法:
- 如果value
只比y
运行func大runy
- 如果value
只比x
运行func大runx
- 如果value
大于两者x
并y
运行funcrunxy
- 如果value
不是比这更好的x
并且y
愚弄功能nonexy
value
,x
,y
可以是任何数量的
例:
x = 4
y = 6
value = 5
Run Code Online (Sandbox Code Playgroud)
这里value
只是大于x
,所以跑runx(x)
python-2.7 ×8
python ×6
java ×2
bash ×1
core ×1
gradle ×1
json ×1
kubernetes ×1
nginx ×1
python-3.x ×1
regex ×1
sql ×1
stack-trace ×1
ubuntu-14.04 ×1