任务:检查文件中序列号和护照号码的可用性。
我的决定如下:
def check_passport(filename, series: str, number: str) -> dict:
"""
Find passport number and series
:param filename:csv filename path
:param series: passport series
:param number: passport number
:return:
"""
print(f'series={series}, number={number}')
find = False
start = datetime.datetime.now()
with open(filename, 'r', encoding='utf_8_sig') as csvfile:
reader = csv.reader(csvfile, delimiter=',')
try:
for row in reader:
if row[0] == series and row[1] == num:
print(row[0])
print(row[1])
find = True
break
except Exception as e:
print(e)
print(datetime.datetime.now() - start)
if find:
return {'result': False, …Run Code Online (Sandbox Code Playgroud) 经过一些初步测试后,Python 似乎使用与 Linux 排序(gnu 排序)相同的排序顺序和 C 排序顺序(如果语言环境设置为“C”)。
\n\n不过,我希望能够编写 Python 代码,根据语言环境以与 gnu 排序相同的方式进行排序和比较。
\n\n说明问题的小示例代码:
\n\nimport os \nimport subprocess\n\nwords = [\n "Abd",\n "\xc3\xa9fg",\n "aBd",\n "aBd",\n "zzz",\n "ZZZ",\n "efg",\n "abd",\n "fff",\n ]\n\nwith open("tosort", "w") as fout:\n for word in words:\n fout.write(word + "\\n")\n\nos.environ["LC_ALL"] = "en_US.UTF-8" \nproc = subprocess.Popen(["sort", "tosort"], stdout=subprocess.PIPE)\nsort_en_utf = proc.stdout.read().decode(\'utf-8\').split()\n\nos.environ["LC_ALL"] = "C" \nproc = subprocess.Popen(["sort", "tosort"], stdout=subprocess.PIPE) \nsort_c = proc.stdout.read().decode(\'utf-8\').split()\n\nos.environ["LC_ALL"] = "en_US.UTF-8"\nsort_py = sorted(words)\n\nfor row in zip(sort_en_utf, sort_c, sort_py):\n print(" ".join(row))\nRun Code Online (Sandbox Code Playgroud)\n\n如果运行上面的代码,我会得到以下输出:
\n\nabd Abd Abd\naBd ZZZ …Run Code Online (Sandbox Code Playgroud) 我有一个 asyncio 应用程序,其中发生了一些异常。
让我们以这个小脚本为例:
import asyncio
async def coro1():
for a in range(1, -1, -1):
await asyncio.sleep(1)
print("coro1", a)
c = 1/a # ### !!!Will raise exception when a is 0!!!!
async def coro2():
for n in range(6):
print("------- coro2", n)
await asyncio.sleep(0.5)
async def main():
coros = [coro1(), coro2()]
completed, pending = await asyncio.wait(coros)
print("comp", completed)
print("pend", pending)
event_loop = asyncio.get_event_loop()
event_loop.run_until_complete(main())
Run Code Online (Sandbox Code Playgroud)
如果我对单线程非异步程序遇到类似的问题,我就会这样做
python -m pydb scriptname
Run Code Online (Sandbox Code Playgroud)
输入c并在代码中以 pydb 结束,这引发了异常,现在我可以查看和显示变量,我可以看到例如,那a是 0
我在我的 asyncio 应用程序中尝试了同样的操作,
我仅在 …
Context:
I'm having several scripts with loads of sub commands that I'd like to convert to using click
目前,所有这些命令都接受-h和--help以便显示帮助选项。我想保持这种行为。
问题:
单击接受默认--help显示帮助文本,但不显示-h
对于单击命令,可以通过添加轻松更改。
@click.group()
@click.help_option("--help", "-h")
def cli():
""" the doc string """
enter code here
@cli.command()
@click.help_option("--help", "-h")
def mycommand()
pass
@cli.command()
@click.help_option("--help", "-h")
def mycommand1()
pass
...
Run Code Online (Sandbox Code Playgroud)
但是,如果我有数十个命令,我必须重新应用装饰器行
@click.help_option("--help", "-h")
Run Code Online (Sandbox Code Playgroud)
堡垒每个子命令。
有什么技巧可以避免到处写这一行吗?