我们如何在 python 中显示人类可读的字节大小?
我们需要转换大量不可读的int结果,例如os.stat(r'C:\1.pdf').st_size
(下面用 3.6 以上的 python 版本的 f-strings 回答我自己的问题,如果它们适用于其他 python 版本或其他格式化方式,请添加您自己的答案)
我有一个项目,其中从文件导入多个文件common.py,因为它们都使用相同的模块/包,并且我想要统一性,并且更容易在一个地方更改值或包。
common.py看起来像这样(只是更长):
import json
import os
import sys
from datetime import datetime
from pathlib import Path
from pprint import pprint
from time import sleep
import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
from pdir.api import PrettyDir
# AND MUCH MORE... with other common functions and classes
Run Code Online (Sandbox Code Playgroud)
项目中的所有其他文件均以以下开头:
from common import *
Run Code Online (Sandbox Code Playgroud)
一切正常。但由于某些导入本身并未使用common.py,PyCharm 无法看到它们在其他模块中使用,并将它们标记为“未使用的导入语句”。
我不想让整个项目的检查保持沉默,因为它在其他地方非常有用。有没有办法强制 PyCharm 检查导入是否在项目的其他地方使用,或者只是静默仅对该文件的检查?
def armstrong(x):
number = str(x)
length = len(number)
sum=0
for i in number:
sum = sum + pow(int(i),length)
print("Yes {0} is an Armstrong Number" .format(x) if(sum==x) else print("No {0} is not an Armstrong Number" .format(x)))
return 0
num=int(input("Enter a Number: "))
armstrong(num)
Run Code Online (Sandbox Code Playgroud)
对于非阿姆斯特朗数字,输出带有“无”,有人可以解释其背后的原因吗?我已将输出附加为相同的图像链接。
当我执行datetime.now()获取当前时间时,它会被打印(带有print),如下所示:
2018-06-14 13:21:02.331933
我想忽略秒和微秒并将其打印出来,如下所示:
2018-06-14 13:21:00
我知道我可以转换为我选择的字符串,strftime但我不想更改字符串,而是更改datetime对象本身,使其具有 0 秒和 0 毫秒(并且strftime立即strptime转换回来似乎很愚蠢)。
换句话说,从 转换datetime(2018, 6, 14, 14, 7, 27, 326853)为datetime(2018, 6, 14, 14, 7)
我尝试过这样的:
now = datetime.now()
now = now - timedelta(seconds=now.second, microseconds=now.microsecond)
Run Code Online (Sandbox Code Playgroud)
这可行,但我确信有一种更简单、更有效的方法(在迭代不同文件时我需要执行数千次)。所以我的问题是我是否正确,有一种更简单的方法,如果是的话,您对此类问题的解决方案是什么?
i = xCoordinate
s = yCoordinate
for i, s in range(5):
pyautogui.moveTo(i, s)
Run Code Online (Sandbox Code Playgroud)
错误:
for i, s in range(5):
TypeError: cannot unpack non-iterable int object
Run Code Online (Sandbox Code Playgroud) 我有一个可以是int或None的变量.如果是别的我提出错误.
我有以下代码:
if not isinstance(id, int) or id is not None:
raise AttributeError('must be called with a id of type INT or NONE')
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为每个条件都否定了另一个条件并且总是会引发错误;