我为什么会收到错误:mv shell命令的“bufsize必须是整数”

时间:2011-10-24 12:28:38

标签: python shell

为什么我收到错误:“bufsize必须是整数”

这一行之后:

pid2 = subprocess.Popen(["mv"],glob.glob(os.path.basename(filename)+'[0-9]*'),folder);

这是一个带有博客shell扩展的简单mv命令。

我想要mv filename[0-9]* folder

2 个答案:

答案 0 :(得分:3)

首先,它是Python,所以你不需要在一行的末尾加分号。那么,你想要的是提供一个参数,即

pid2 = subprocess.Popen(["mv"] +
                        glob.glob(os.path.basename(filename)+'[0-9]*') +
                        [folder])

否则,您将glob.glob的结果指定为subprocess.Popen的第二个参数(bufsize)。

另请注意,调用mv是不必要的,Python已经具有移动shutil.move中实现的文件的功能:

for f in glob.glob(os.path.basename(filename)+'[0-9]*'):
    shutil.move(f, folder)

答案 1 :(得分:0)

作为第一个参数,Popen()采用字符串或参数列表。你刚刚通过["mv"]; glob.glob(...)folder被解释为subprocess.Popen()的第二个和第三个参数,即bufsizeexecutable

尝试:

args = ["mv"] + [glob.glob(os.path.basename(filename)+'[0-9]*')] + [folder]
pid2 = subprocess.Popen(args)