因此,我想创建一个简单的脚本,根据某个文件夹中包含的文件名创建目录。你知道吗
我的方法如下:
def make_new_folders(filenames, destination):
"""
Take a list of presets and create new directories using mkdir
"""
for filename in filenames:
path = '"%s/%s/"' % (destination, filename)
subprocess.call(["mkdir", path])
因为某种原因我不能让命令工作。你知道吗
如果传入名为“Test Folder”的文件,则会出现如下错误:
mkdir: "/Users/soundteam/Desktop/PlayGround/Test Folder: No such file or directory
打印“path”变量会导致: “/Users/soundteam/Desktop/PlayGround/Test Folder/”
有人能给我指出正确的方向吗?你知道吗
你不需要双引号。
subprocess
将参数直接传递给进程,因此不需要为shell的解析做准备。您也不需要尾部斜杠,应该使用操作系统路径连接要组合路径组件,请执行以下操作:编辑:您应该接受@Fabian的答案,这说明您根本不需要子流程(我知道)。你知道吗
首先,应该使用
os.path.join()
将路径部分粘合在一起,因为它跨平台工作。你知道吗此外,还有os.mkdir或os.makedirs(这非常酷,因为它是递归的)之类的内置命令来创建文件夹。创建子流程成本很高,在这种情况下,这不是一个好主意。你知道吗
在您的示例中,您将双引号(
"destination/filename"
)传递给子进程,而不必这样做。如果在文件名或文件夹名中使用空格,则终端需要双引号,子进程将为您处理该问题。你知道吗相关问题 更多 >
编程相关推荐