加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用通配符从Python Popen调用’mv’

发布时间:2020-12-20 12:27:09 所属栏目:Python 来源:网络整理
导读:我似乎无法使用带有通配符的 Python subprocess.Popen来使用’mv’命令. 代码: def moveFilesByType(source,destination,extension): params = [] params.append("mv") params.append(source + "/*." + extension) params.append(destination + "/") print
我似乎无法使用带有通配符的 Python subprocess.Popen来使用’mv’命令.

代码:

def moveFilesByType(source,destination,extension):
    params = [] 
    params.append("mv")
    params.append(source + "/*." + extension)       
    params.append(destination + "/") 

    print params

    pipe = subprocess.Popen(params,shell=True,stdout=PIPE)
    result,err = pipe.communicate()

    return result

print params的输出:

['mv','/full_path_to_folder_source/*.nib','/full_path_to_folder_target/']

这里的路径只是为了便于阅读而缩短,但我保证它们是有效的.从终端调用这个完全相同的命令可以正常工作,但是在python中调用会给出关于mv使用不当的标准消息:

usage: mv [-f | -i | -n] [-v] source target
       mv [-f | -i | -n] [-v] source ... directory

我读到为了使通配符工作,我需要Popen调用中的参数shell = True,它存在.任何想法为什么这不起作用?删除shell = True最终将星号视为预期的硬文字.

解决方法

使用字符串而不是数组:

params = "mv /full_path_to_folder_source/*.nib /full_path_to_folder_target/"

通过数组表单指定参数时,参数’/full_path_to_folder_source/*.nib’将传递给mv.你想强制bash扩展参数,但Popen不会通过shell传递每个参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读