假设您有三个通过上下文管理器获取的对象,例如A锁,数据库连接和ip套接字.您可以通过以下方式获取它
with lock:
with db_con:
with socket:
#do stuff
Run Code Online (Sandbox Code Playgroud)
但有没有办法在一个街区内完成?就像是
with lock,db_con,socket:
#do stuff
Run Code Online (Sandbox Code Playgroud)
此外,如果有一组具有上下文管理器的未知长度的对象,是否有可能以某种方式做到:
a=[lock1, lock2, lock3, db_con1, socket, db_con2]
with a as res:
#now all objects in array are acquired
Run Code Online (Sandbox Code Playgroud)
如果答案是"不",是不是因为需要这样的功能意味着设计不好,或者我应该建议它?:-P
我越来越相信文件编码业务的目的是尽可能地混淆.我在读取utf-8只包含一行的编码文件时遇到问题:
“blabla this is some text”
Run Code Online (Sandbox Code Playgroud)
(请注意,引号是标准引号的一些奇特版本).
现在,我Python在其上运行这段代码:
import fileinput
def charinput(paths):
with open(paths) as fi:
for line in fi:
for char in line:
yield char
i = charinput('path/to/file.txt')
for item in i:
print(item)
Run Code Online (Sandbox Code Playgroud)
有两个结果:如果我从命令提示符运行我的python代码,结果是一些奇怪的字符,后跟一个错误消息:
?
»
?
â
Traceback (most recent call last):
File "krneki.py", line 11, in <module>
print(item)
File "C:\Python34\lib\encodings\cp852.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u20ac' in position
0: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)
我得到这个问题来自于一个事实,即Python的尝试读取"错误"编码的文件,但有没有办法责令想法 …