Skip to main content

添加微小的恢复功能,用于 csv 读取迭代器

项目描述

css可恢复

为您的 csv 阅读迭代器添加微小的恢复功能。

例子

00main.py

import sys
import os
import random
from io import StringIO
from csvresumable import DictReader

data = """\
id,name
1,foo
2,bar
3,boo
"""

random.seed(int(os.environ.get("SEED", "0")))
for row in DictReader(StringIO(data)):
    n = random.random()
    if n < 0.5:
        print("fail {}".format(n), file=sys.stderr)
        sys.exit(0)
    print("\t", row["name"])
print("finished")

恢复直到成功。

SEED=0 python 00main.py
fail 0.420571580830845
	 foo
	 bar
SEED=1 RESUME=1 python 00main.py
fail 0.13436424411240122
SEED=2 RESUME=1 python 00main.py
	 boo
finished
SEED=5 python 00main.py
	 foo
	 bar
	 boo
finished

或使用resume选项设置(运行此脚本,例如python 01main.py --resume

--- 00main.py	2018-06-16 04:19:51.573578443 +0900
+++ 01main.py	2018-06-16 04:20:04.760554103 +0900
@@ -4,17 +4,23 @@
 from io import StringIO
 from csvresumable import DictReader

-data = """\
+data = """
 id,name
 1,foo
 2,bar
 3,boo
 """

+import argparse
+parser = argparse.ArgumentParser()
+parser.add_argument("--seed", default=0, type=int)
+parser.add_argument("--resume", action="store_true")
+args = parser.parse_args()
+
 random.seed(int(os.environ.get("SEED", "0")))
-for row in DictReader(StringIO(data)):
+for row in DictReader(StringIO(data), resume=args.resume):
     n = random.random()
-    if n < 0.5:
+    if n > 0.8:
         print("fail {}".format(n), file=sys.stderr)
         sys.exit(0)
     print("\t", row["name"])

有多个文件

from csvresumable import DictReader

files = ["a.csv", "b.csv"]
for f in files:
    r = DictReader(f)
    for row in r:
        do_something(row)

更多的

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

csvresumable-0.0.3.post2.tar.gz (4.8 kB 查看哈希

已上传 source

内置分布

csvresumable-0.0.3.post2-py2.py3-none-any.whl (6.4 kB 查看哈希

已上传 py2 py3