Skip to main content

adding tiny resume function, for csv reading iterator

Project description

cssresumable

Adding tiny resume function for your csv reading iterator.

examples

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")

resuming until success.

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

or setting with resume option (run this script, such as 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"])

with multi files

from csvresumable import DictReader

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

more

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

csvresumable-0.0.3.post2.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

csvresumable-0.0.3.post2-py2.py3-none-any.whl (6.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file csvresumable-0.0.3.post2.tar.gz.

File metadata

File hashes

Hashes for csvresumable-0.0.3.post2.tar.gz
Algorithm Hash digest
SHA256 0840b7bc6ef4161c39572c8366d8265375da60406f38d59f3d17aaecbc7ffc58
MD5 e75893243b8376081353f59cfcda5432
BLAKE2b-256 8d771f45e9b653596f2f1adfc4b9c5a36951a7a45fb66e3e636169de335fc31f

See more details on using hashes here.

File details

Details for the file csvresumable-0.0.3.post2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for csvresumable-0.0.3.post2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 dbe58d8079d96ee07c985f67db91e57148cf1d01c2503cf410cbfe62a5c217d4
MD5 4ae1c5599b18bd8cde392c3dd940a4e4
BLAKE2b-256 28edf9bf4ff693ce4c9233ede0bf57450d60674d4b152b2298405627888ae748

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page