Python subprocess.call - adding a variable to subprocess.call(Python subprocess.call - 将变量添加到 subprocess.call)
问题描述
我正在尝试用 Python 编写一个简单的程序,该程序从我的下载文件夹中获取所有音乐文件并将它们放入我的音乐文件夹中.我使用的是 Windows,可以使用 cmd 提示符移动文件,但出现此错误:
I'm trying to write a simple program in Python that takes all the music files from my Downloads folder and puts them in my Music folder. I'm using Windows, and I can move the files using the cmd prompt, but I get this error:
WindowsError: [错误2]系统找不到指定的文件
这是我的代码:
#! /usr/bin/python
import os
from subprocess import call
def main():
os.chdir("C:\UsersAlexDownloads") #change directory to downloads folder
suffix =".mp3" #variable holdinng the .mp3 tag
fnames = os.listdir('.') #looks at all files
files =[] #an empty array that will hold the names of our mp3 files
for fname in fnames:
if fname.endswith(suffix):
pname = os.path.abspath(fname)
#pname = fname
#print pname
files.append(pname) #add the mp3 files to our array
print files
for i in files:
#print i
move(i)
def move(fileName):
call("move /-y "+ fileName +" C:Music")
return
if __name__=='__main__':main()
我查看了 subprocess 库和无数其他文章,但我仍然不知道我做错了什么.
I've looked at the subprocess library and countless other articles, but I still have no clue what I'm doing wrong.
推荐答案
subprocess.call 方法获取参数列表而不是带有空格分隔符的字符串,除非您告诉它使用 shell,即如果字符串可以包含用户输入的任何内容,则不推荐使用.
The subprocess.call method taks a list of parameters not a string with space separators unless you tell it to use the shell which is not recommended if the string can contain anything from user input.
最好的方法是将命令构建为列表
The best way is to build the command as a list
例如
cmd = ["move", "/-y", fileName, "C:Music"]
call(cmd)
这也使得将带有空格的参数(例如路径或文件)传递给被调用程序变得更加容易.
this also makes it easier to pass parameters (e.g. paths or files) with spaces in to the called program.
子流程文档中给出了这两种方式.
你可以传入一个分隔字符串,但是你必须让 shell 处理参数
You can pass in a delimited string but then you have to let the shell process the arguments
call("move /-y "+ fileName +" C:Music", shell=True)
在这种情况下,移动还有一个 python 命令来执行此操作.shutil.move
Also in this case for move there is a python command to do this. shutil.move
这篇关于Python subprocess.call - 将变量添加到 subprocess.call的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Python subprocess.call - 将变量添加到 subprocess.call
基础教程推荐
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
- 求两个直方图的卷积 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- 包装空间模型 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
