如何比较一个文件的名称和数字?
问题描述:
我想选择与那些文件名超过60如何比较一个文件的名称和数字?
例数的痕迹:bloc119_5950_6000.npy
该文件的编号为:119
但错误的是它会显示所有文件的所有日数不任何比较:
def Extract_Number_Block(block):
NbrBlock = block.split('bloc')[1].split('_')[0]
return NbrBlock
path_For_Numpy_blocks='/data/sas/blockData'
for block in os.listdir(path_For_Numpy_blocks):
NbrB= Extract_Number_Block(block)
print(NbrB)
A=60
if NbrB>A:
print(NbrB)
else:
print('Erreur')
答
你的函数返回一个字符串。比较与诠释
def Extract_Number_Block(block):
NbrBlock = block.split('bloc')[1].split('_')[0]
return int(NbrBlock) #converting to int
path_For_Numpy_blocks='/data/sas/blockData'
for block in os.listdir(path_For_Numpy_blocks):
NbrB= Extract_Number_Block(block)
print(NbrB)
A=60
if NbrB>A:
print(NbrB)
else:
print('Erreur')
答
你比较字符串NbrB
与整数A
(文件名的一部分)。这不会给你任何有意义的比较结果(Python 2)或引发错误(Python 3)。
你可以将字符串但是转换为数字:
def Extract_Number_Block(block):
NbrBlock = block.split('bloc')[1].split('_')[0]
return int(NbrBlock)
注意int()
的NbrBlock
将字符串(如果可能)转换为整数左右。
答
我认为你需要转换回到NbrBlock
为整数的拆分将返回字符串作为发生。所以你有A = 60,但你的NbrB
是'119',它是字符串。所以只需将您的NbrB
或NbrNBlock
转换为整数。
见下文:
def Extract_Number_Block(block):
NbrBlock = block.split('bloc')[1].split('_')[0]
return int(NbrBlock)
,你能否告诉我们您收到什么样的错误? – pstatix