希望这不是很愚蠢/基本,但是我想我缺少一个基本的构建基块。
我正在编写一个Python循环以根据OCR结果重命名文件,但希望保留原始文件名的选项。我刚接触Python和编程,对如何计算布尔逻辑存在疑问。作为背景,我知道True是True,False是False,不是True是False,不是False是True。
对于方法/功能,它检查是否要重命名的关键字参数为True或False。为此,我有一个if循环,仅显示“ if named:”。默认情况下,重命名为False。我不确定为什么说“如果重命名:然后不要重命名文件”不起作用,但是写“如果不重命名:不要重命名文件”确实起作用。
我发现,如果键入“如果不重命名:请不要重命名文件”,则可以得到预期的结果,但是我不确定为什么可以这样做。
def pnid_rename(file_name, new_name, rename = False):
if not rename:
print('Not renaming')
return
else:
print('Renaming ' + file_name)
os.rename(file_name, str(new_name) + '.png')
return
对我来说,“如果重命名”与“如果假”相同,因为重命名=假,所以文件不应该重命名,因为假==假为True。相反,这将触发重命名循环。
那为什么我不需要'
答案 0 :(得分:0)
“我不确定为什么说“如果重命名:则不要重命名文件”不起作用,而写“如果不重命名:请不要重命名文件”起作用。” =>是正确的。如果重命名的结果为if,则if块内的语句将不执行,而else块内的语句将执行。如果不重命名,则为if,否则为true,因为not false为true,则if块中的语句将执行。
也许您可以详细说明问题所在?
答案 1 :(得分:0)
类似于询问变量rename
是否为空或具有任何值。因此,如果您写:
if rename:
print('Not renaming')
就像您要询问rename
变量是否包含任何内容一样,这是真的吗?否,因为该值为False,因此在这种情况下该函数返回Renaming ...
如果您写:
if not rename:
print('Not renaming')
就像您问的是,该值是否没有任何值,那是真的,因为False类似于说空。这是一种了解您的逻辑的方法,但实际上这不是问题。
答案 2 :(得分:0)
我刚刚意识到我昨晚太累了。如果if评估为true,则if语句不会进入else条件。通过说“不对”,我确保它是对的。感谢所有帮助!