This is my participation 8 The fourth of the yuegengwen challenge 8 God , Check out the activity details :8 Yuegengwen challenge Hello everyone , Today I'd like to introduce some good comments Python library , I hope it will be helpful to your project preparation .
Python There are too many standard library modules and types , Time zone conversion trouble , and Arrow Is a more intelligent Python Time processing library . It implements and updates the date time type , Support the creation of 、 operation 、 Format and convert dates 、 Time and time stamp , You can use less import and code to process dates and times .
install :pip install arrow
import arrow
# Time in the local time zone 、 year 、 month 、 Japan 、 when
print(arrow.now())
print(arrow.now().year)
print(arrow.now().month)
print(arrow.now().day)
print(arrow.now().hour)
# Gets the time in the specified time zone
print(arrow.now('US/Pacific'))
# Get the timestamp
print(arrow.now().timestamp())
# Arrow Object to string time
print(arrow.now().format(fmt="YYYY-MM-DD HH:mm:ss"))
# Timestamp to date
timeStamp = 1625034427.024892
i = arrow.get(timeStamp)
print(i.format('YYYY-MM-DD HH:mm:ss'))
# One year before the current time ,1 Months ago ,2 Zhou Qian ,3 Days later ,2 Hours later
print(arrow.now().shift(years=-1, months=-1, weeks=-2, days=3, hours=2).format())
print(arrow.utcnow().span('hour'))
Copy code
jsonpath Used to resolve json data , It's a simple way to extract a given JSON Part of the document . It provides a regular expression like syntax , Can parse complex nested data structures , It is very convenient to extract the data information returned by the interface .
install :pip install jsonpath
Use :
from jsonpath import jsonpath
ret = jsonpath(dic, ' Syntax rule string ')
Copy code
jsonpath Rule of grammar
grammar | describe |
---|---|
$ | The root node |
@ | Use filter predicates to process the current node |
. or [] | Take the child node |
n/a | Take the parent node ,jsonpath Not supported |
.. | It doesn't matter where you are , Select the conditions that meet the conditions |
* | Match all element nodes |
[,] | Support multiple choices in iterators |
?() | Support filtering operation |
() | Support expression evaluation |
JsonPath grammar | result |
---|---|
$.store.book[*].author | obtain store Next book All under author value |
$..author | Get all author Value |
$.store..price | obtain store All nodes under and all child nodes price |
$..book[2] | obtain book The first of an array of 3 It's worth |
$..book[0,1] | obtain book The first of the array 、 The second value |
$..book[:2] | obtain book Array from index 0 ( Include ) To Indexes 2 ( barring ) All values |
$..book[1:2] | obtain book Array from index 1 ( Include ) To Indexes 2 ( barring ) All values |
$..book[2:] | obtain book Array from index 2 ( Include ) To ending All values |
$..book[?(@.isbn)] | obtain All nodes and child nodes book The array contains isbn All values |
$.store.book[?(@.price < 10)] | obtain store Next book Array price < 10 All values |
['expensive'])] | obtain All nodes and child nodes book Array price <= expensive All values |
$..book[?(@.author =~ /.*REES/i)] | Get all matching regular book ( Case insensitive ) |
$..* | List layer by layer json in All values , Hierarchy from outside to inside |
A cross platform method for monitoring hardware information Python library , Can monitor 、 Analyze the process of the operating system 、cpu、 Memory 、 The Internet 、 Use of disk and other resources .
psutil The functions implemented are similar to linux Many resource monitoring commands in , Such as ps、 top、 iotop、 lsof、 netstat、 ifconfig、 free etc. , Of course , You can combine Python Programming , To achieve more advanced functions , For example, combining with the front-end framework to realize visual resource monitoring resource information .
install :pip install psutil
see CPU
import psutil
# cpu The number of logics
print(psutil.cpu_count())
# every other 1 Output every... Seconds cpu The usage rate of
for x in range(3):
# interval: every other 0.5s Refresh once
# percpu: View all cpu Usage rate
print(psutil.cpu_percent(interval=1, percpu=True))
Copy code
Look at the memory
import psutil
# Output memory usage ( Total memory 、 Available memory 、 Memory usage 、 Used memory )
print(psutil.virtual_memory())
Copy code
svmem(total=17126330368, available=8755355648, percent=48.9, used=8370974720, free=8755355648)
Copy code
disk IO
import psutil
# disk IO Information read_count( read IO Count ),write_count( Write IO Count )、read_bytes(IO Number of bytes written ),read_time( Disk read time ),write_time( Disk write time )
print(psutil.disk_io_counters())
Copy code
sdiskio(read_count=308820, write_count=193263, read_bytes=6779938304, write_bytes=3320958976, read_time=7298, write_time=2630)
Copy code
The Internet
import psutil
# bytes_sent: Number of bytes sent
# bytes_recv: Bytes received
# packets_sent: The amount of packet data sent
# packets_recv: The amount of packet data received
# errin: When receiving packets , Number of errors
# errout: When sending a packet , Number of errors
# dropin: When receiving packets , Number of discards
# dropout: When sending a packet , Number of discards
print(psutil.net_io_counters())
Copy code
snetio(bytes_sent=19362924, bytes_recv=159579883, packets_sent=118788, packets_recv=184342, errin=0, errout=0, dropin=0, dropout=0)
Copy code
tenacity It's a Apache 2.0 Authorized universal retrial Library , Automated tests or crawlers , When the network instability causes the request to time out or wait for the conditions to be met , We can go through tenacity Implement the retry function of the code .
pip install tenacity
Copy code
Very simple to use , Directly add the decorator to use .
retry 3 Time
import tenacity
from tenacity import stop_after_attempt
@tenacity.retry(stop=stop_after_attempt(3))
def retry_test():
print(" retry ...")
raise Exception
retry_test()
Copy code
retry 10 second
import tenacity
from tenacity import stop_after_delay
@tenacity.retry(stop=stop_after_delay(10))
def retry_test():
print(" retry ...")
raise Exception
retry_test()
Copy code
every other 2 Seconds to retry
import tenacity from tenacity import wait_fixed
@tenacity.retry(wait=wait_fixed(2)) def wait_2_s(): print("Wait 2 second between retries") raise Exception
print(wait_2_s)