如何在特定驱动器上的所有子目录中创建文件?

时间:2018-10-31 18:24:29

标签: python python-3.x windows

我想创建一个文本文件(内部包含内容),并在特定驱动器的每个子目录(文件夹)中复制/创建该文件,例如使用Python的D。最好使用预安装的python库,而无需pip安装任何内容。

因此,Python 3脚本从驱动器C运行,创建一个包含文本的文本文件,并将该文本文件粘贴到驱动器D的每个文件夹中一次。我需要在Windows上使用它。

create("file.txt", contents "example text")
copy("file.txt" to "D:\*")

示例输出

Copied file.txt to D:\
Copied file.txt to D:\folder example
Copied file.txt to D:\folder example\subfolder example
Copied file.txt to D:\another folder

3 个答案:

答案 0 :(得分:2)

您可以使用os.walk获取所有目录。例如,尝试

import os
filename = "myfile.txt"
filetext = "mytext"
directories = os.walk("D:")
for directory in directories:
    with open(directory[0]+"\\"+filename, "w") as file:
        file.write(filetext)

这会将filetext写入myfile.txt中每个目录的文件D:中。

编辑:如果您没有特定目录的权限,则可能要为此添加try语句

答案 1 :(得分:0)

这称为递归目录遍历

https://stackoverflow.com/a/16974952/4088577

希望此提示对您有帮助。

这是您感兴趣的行。

  

print((len(path)-1)*'---',os.path.basename(root))

如果您想了解更多信息,可以阅读

https://www.bogotobogo.com/python/python_traversing_directory_tree_recursively_os_walk.php

答案 2 :(得分:0)

例如,使用OS lib:

from os import listdir
from os.path import isfile

path = "/some/path"

for f in listdir(path):
    if not isfile(path):
        filepath = "{0:s}/dummy.txt".format(path)
        with open(filepath, 'w') as f:
            f.write('Hi there!')

或使用glob:

import glob

path = '/some/path/*/'
paths = glob.glob(path)
filename = "dummy.txt"

for path in paths:
    filepath = "{0:s}{1:s}".format(path, filename)
    with open(filepath, 'w') as f: 
        f.write('Hi there!')

请注意!:第二个solluton仅在Linux OS下工作(由于glob)