mkdir与子文件夹在终端中工作,但不是从python

Vivek V Dwivedi

我想用子文件夹创建一些文件夹,并使用这个python3脚本读取csv文件并为我创建目录。

from subprocess import call
import csv

def csv_dict_reader(file_obj):
    """
    Read a CSV file using csv.DictReader
    """
    reader = csv.DictReader(file_obj, delimiter=',')
    for line in reader:
        sanitized_name = line["course"].replace(" ", "-").lower()

        command = 'mkdir -p ' + sanitized_name + '/week_{1..'+ line["week"] +'}/{slides,exercise,assignment}'
        call(command)


if __name__ == "__main__":
    with open("courses.csv") as f_obj:
        csv_dict_reader(f_obj)

我期待它执行这种命令

mkdir -p algorithmic-toolbox/week_{1..6}/{slides,exercise,assignment}

在终端上可以正常工作,并创建一个文件夹,其中包含algorithmic-toolbox6个文件夹week1 to week6,然后每个文件夹都包含slides, exercises and assignment文件夹。

一个示例csv将是这样的:

course,week
Algorithmic Toolbox,6
Data Structures,4
Algorithms on Graphs,5

运行python脚本时出现此错误。

Traceback (most recent call last):
  File "course-folder.py", line 18, in <module>
    csv_dict_reader(f_obj)
  File "course-folder.py", line 13, in csv_dict_reader
    call(command)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 267, in call
with Popen(*popenargs, **kwargs) as p:
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 709, in __init__
restore_signals, start_new_session)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 1344, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'mkdir -p algorithmic-toolbox/week_{1..6}/{slides,exercise,assignment}': 'mkdir -p algorithmic-toolbox/week_{1..6}/{slides,exercise,assignment}'

不知道FilenotFoundError在创建目录时为什么会这样说-p如果目录不存在,应该使用该目录创建父目录。

斯佩西
mkdir -p algorithmic-toolbox/week_{1..6}/{slides,exercise,assignment}

我相信,如果不将shell=True参数传递给,则上述命令中使用的参数扩展将无法工作subprocess.call这样,Python将在中间Shell进程中执行命令。

如果希望脚本独立于平台,则可以使用os.mkdir和处理Python中的逻辑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

FactorDB 在终端中工作,但不在 python 文件中

mvn clean在终端中工作正常,但不是来自cron和bash文件

git子文件夹在推上丢失

VueJS CLI Webpack 静态文件夹在子文件夹中不起作用

Apache 允许所有子文件夹中的目录列表,但不是根文件夹?

Android API 23 mkdir创建的文件夹在Windows资源管理器中显示为单个文件

非二进制折叠和文件夹在Racket中如何工作?

包文件夹在类文件夹中

从我的模块中的另一个文件夹在 python 中导入模块函数

Bash mkdir和子文件夹

如何阻止文件或文件夹在GNOME中建立索引?

Windows命令在cmd中工作,但不是.bat文件

Git忽略子文件夹,但不忽略文件夹中的文件

.docker忽略所有子文件夹,但不忽略文件夹本身中的文件

web3代码在终端中工作但不是ide

Windows中的“〜/ .gradle”文件夹在哪里?

IntelliJ中的“测试”文件夹在哪里

OS X中的Temp文件夹在哪里?

使用共享文件夹在VirtualBox中运行Arch ISO

Java 9中的JRE文件夹在哪里?

Rust docker 镜像中的 .cargo 文件夹在哪里?

Xcode中的library文件夹在哪里?

Windows 8中的SkyDrive文件夹在哪里?

libs文件夹在android studio中不起作用

PyScripter:%APPDATA%\ pyScripter \ skins文件夹在磁盘中的哪里?

CodeIgniter中的“ build”文件夹在哪里?

静态文件夹在错误的子目录中

内部文件夹在Visual Studio中并排显示

Windows 8中的“修复”文件夹在哪里?