python程序的一组有用的实用程序
ccautils的Python项目详细描述
丘吉尔
python3.6+程序和脚本的一组实用程序。在
Install
为用户安装:
pip3 install ccautils --user
为虚拟环境安装:
^{pr2}$Development
我使用poetry来管理这些实用程序。
克隆此存储库并安装poetry
,然后安装依赖项。在
git clone https://github.com/ccdale/ccautils.git
cd ccautils
poetry install
Testing
要运行测试,必须安装pytest
、nox
和{
将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)
返回一个在xstr
后附加xadd
的字符串。如果xadd
是一个列表,则所有
str
列表中的成员将按顺序追加。在
UT.addToString("hello", [" ", "world"])
> "hello world"
delimitString(xstr, delimeter=" - ")
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)
从参数字符串构造字典。前导和尾随 空白被删除。在
istr
的格式应该是someparam=somevalue,someotherparam=otherval
UT.makeDictFromString("sparam=sval, soparam = soval")
> {"sparam": "sval", "soparam": "soval"}
askMe(q, default)
请求用户输入。提出了一个问题q
。返回用户
如果没有输入,则返回default
。在
UT.askMe("press 5, please", "8")
> press 5, please: 5
> 5
padStr(xstr, xlen=2, pad=" ", padleft=True)
在
左(padleft
为真)或右(padleft
为假)
UT.padStr("23", 5, "0")
> "00023"
reduceTime(unit, secs)
将secs
除以unit
,返回一个元组(units
,remainder
)
如果unit
为零,则引发ValueError
。在
UT.reduceTime(3600, 3700)
> (1, 100)
displayValue(val, label, zero=True)
如果val
>;1或val
为0,则为label
。在
如果val
==0且zero
==True,则返回空字符串
UT.displayValue(12, "table")
> "12 tables"
secondsFromHMS(shms)
将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)
将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)
给定一个datetime
对象,计算now和that之间的差异
时间。返回一个元组(ts
:unix时间戳为dt
,op
: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)
测试是否存在完全限定(绝对)文件名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)
测试是否存在完全限定(绝对)目录名fqdn
返回:True
如果fqdn
存在,则False
dfExists(fqdfn)
测试文件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)
拍拍hpn
包括任何丢失的父目录。做
如果路径pn
已经存在,则不存在任何内容。在
返回:无
dn = "/home/chris/appdir/subdir"
FT.makePath(dn)
- 项目
标签: