为什么我收到错误:“bufsize必须是整数”
这一行之后:
pid2 = subprocess.Popen(["mv"],glob.glob(os.path.basename(filename)+'[0-9]*'),folder);
这是一个带有博客shell扩展的简单mv命令。
我想要mv filename[0-9]* folder
答案 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()
的第二个和第三个参数,即bufsize
和executable
。
尝试:
args = ["mv"] + [glob.glob(os.path.basename(filename)+'[0-9]*')] + [folder]
pid2 = subprocess.Popen(args)