python程序的一组有用的实用程序

ccautils的Python项目详细描述


TestsCodecovPythonPyPI

丘吉尔

python3.6+程序和脚本的一组实用程序。在

Install

为用户安装:

pip3 install ccautils --user

为虚拟环境安装:

^{pr2}$

Development

我使用poetry来管理这些实用程序。 克隆此存储库并安装poetry,然后安装依赖项。在

git clone https://github.com/ccdale/ccautils.git
cd ccautils
poetry install

Testing

要运行测试,必须安装pytestnox和{}。在

将nox安装到python用户环境中。在

pip install nox --user

使用运行测试

nox -rs tests

用短绒跑

nox -rs lint

使用运行控制台ask测试

nox -rs tests -- -sm ask

Error Utilities(#headdd)

See the code了解如何使用这些 异常帮助程序。在

Miscellaneous Utilities

Usage

import ccautils.utils as UT

addToString(xstr, xadd)

Code

返回一个在xstr后附加xadd的字符串。如果xadd是一个列表,则所有 str列表中的成员将按顺序追加。在

UT.addToString("hello", [" ", "world"])

> "hello world"

delimitString(xstr, delimeter=" - ")

Code

xstr可以是列表或字符串。如果它是一根弦,它就会被分开 空格并用delimeter分隔。如果是一个列表,则每个成员都是 用delimeter交货。在

UT.delimitString(["bright", "world"], " ")

> "bright world"

UT.delimitString("I wandered lonely as an artichoke", ".")

> "I.wandered.lonely.as.an.artichoke"

makeDictFromString(istr)

Code

从参数字符串构造字典。前导和尾随 空白被删除。在

istr的格式应该是someparam=somevalue,someotherparam=otherval

UT.makeDictFromString("sparam=sval, soparam = soval")

> {"sparam": "sval", "soparam": "soval"}

askMe(q, default)

Code

请求用户输入。提出了一个问题q。返回用户 如果没有输入,则返回default。在

UT.askMe("press 5, please", "8")

> press 5, please: 5
> 5

padStr(xstr, xlen=2, pad=" ", padleft=True)

Code

在 左(padleft为真)或右(padleft为假)

UT.padStr("23", 5, "0")

> "00023"

reduceTime(unit, secs)

Code

secs除以unit,返回一个元组(unitsremainder

如果unit为零,则引发ValueError。在

UT.reduceTime(3600, 3700)

> (1, 100)

displayValue(val, label, zero=True)

Code

如果val>;1或val为0,则为label。在

如果val==0且zero==True,则返回空字符串

UT.displayValue(12, "table")

> "12 tables"

secondsFromHMS(shms)

Code

将HMS字符串转换为整数秒

UT.secondsFromHMS("01:01:23.43")
# 1 hour, 1 minute, 23 seconds + 0.43 second

> 3683

hms(secs, small=True, short=True, single=False, colons=False)

Code

secs转换为天、小时、分钟和秒

如果small为真,则仅在大于等于零时返回较大的值

如果short为真,那么标签就是它们的缩写

如果single为真,则标签为单字母

如果colons为真,则输出的形式为01:03:23

UT.hms(67)

> "1 min and 7 secs"

UT.hms(67, short=False)

> "1 minute and 7 seconds"

UT.hms(67, small=False, short=False)

> "0 days, 0 hours, 1 minute and 7 seconds"

secs = 86400 + 7200 + 300 + 34
UT.hms(secs, single=True)

> "1d 2h 5m 34s"

secs = 345
UT.hms(secs, colons=True)

> "05:45"

secs = 86400 + 7200 + 300 + 34
UT.hms(secs, colons=True)

> "01:02:05:34"

fuzzyExpires(dt)

Code

给定一个datetime对象,计算now和that之间的差异 时间。返回一个元组(ts:unix时间戳为dtop:string)

返回的字符串给出了从now到 dt对象或字符串“EXPIRED”。在


    """It returns 2 hours 20 minutes and some seconds."""
    ts = int(time.time())
    ts += (3600 * 2) + (60 * 20)
    dt = datetime.datetime.fromtimestamp(ts)
    gotts, gotstr = UT.fuzzyExpires(dt)


    """It returns 1 year and 2 months."""
    ts = int(time.time())
    ts += (86400 * 365) + (86400 * 70)
    dt = datetime.datetime.fromtimestamp(ts)
    gotts, gotstr = UT.fuzzyExpires(dt)

File Utilities

Usage

import ccautils.fileutils as FT

fileExists(fqfn)

Code

测试是否存在完全限定(绝对)文件名fqfn

返回:True如果fqfn存在,则False

fn = "/home/chris/output.csv"
if FT.fileExists(fn):
    # do something
else:
    raise(f"File {fn} does not exist")

dirExists(fqdn)

Code

测试是否存在完全限定(绝对)目录名fqdn

返回:True如果fqdn存在,则False

^{pr21}$

dfExists(fqdfn)

Code

测试文件fqdfn是否存在,如果不存在,则检查fqdfn是否存在 存在的目录。在

返回:True如果fqdfn存在,则False

dn = "/home/chris"
if FT.dfExists(dn):
    # do something
else:
    raise(f"File / Directory {dn} does not exist")

makePath(pn)

Code

拍拍hpn包括任何丢失的父目录。做 如果路径pn已经存在,则不存在任何内容。在

返回:无

dn = "/home/chris/appdir/subdir"
FT.makePath(dn)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Eclipse Helios for Web项目   java指定行。作为编译器设置的分隔符?   osm映射中带有osmdroid的java标记   java Android ClassNotFoundException在路径:DexPathList上未找到类   java从j2me调用GWT方法   更新到java 8后的aspectj问题   如何仅从根元素java,com提取文本内容。滴虫软件。是的。html   安卓公司。谷歌。火基。数据库DatabaseException:未能转换java类型的值。将字符串改为长字符串   从java中的方法返回arraylist变量   java如果将引用重新分配给同步块内的锁对象,会是什么?   java下载。使用spring mvc的资源文件中的xlsx文件   java Eclipse提供了什么工具来运行Eclipse中未包含的程序?   spring boot Java泛型如何读取传递给泛型方法的类型上的字段或调用方法   Javacard中的javaecdsa签名