我写了下面的代码来生成一个目录中所有mp3文件的哈希代码。但系统对名称中有空格的文件抛出错误
目录-d:\song
AB目录中的文件CD.mp3, Abc.mp3, 国标mp3在
import os
dirname = 'd:\song'
def walk(dirname):
names = []
for name in os.listdir(dirname):
path = os.path.join(dirname,name)
if os.path.isfile(path):
names.append(path)
else:
names.extend(walk(path))
return names
def chk_dup(f):
for i in f:
cmd = 'fciv -md5 %s' % i.replace(' ','')
fp = os.popen(cmd)
res = fp.read()
print(res)
fp.close()
chk_dup(walk(dirname))
输出是
^{pr2}$
你的文件是
"AB CD.mp3"
,不是"ABCD.mp3"
。因此,找不到文件"ABCD.mp3"
。在尝试使用
'
填充命令:祝你好运!在
如果文件路径名参数包含空格,则可以用双引号将所有文件路径名参数括起来,从而解决当前的问题。这将使它被视为一个单一的论点,而不是其中的两个(或两个以上),否则的话。在
但是,与其这么做,我建议您完全停止使用
os.popen()
,因为it has been deprecated since Python version 2.6,而是使用推荐的subprocess
模块。除其他优点外,这样做将自动处理引用参数,其中包含空格。在此外,利用内置的
os.walk()
函数来简化您自己的walk()
函数也会很有用。在合并这两个更改将导致代码看起来如下所示:
^{pr2}$相关问题 更多 >
编程相关推荐