Как создать файл во всех подкаталогах на конкретном диске? - PullRequest
0 голосов
/ 31 октября 2018

Я хотел бы создать текстовый файл (с содержимым внутри) и сделать так, чтобы этот файл копировался / создавался в каждом подкаталоге (папке) на определенном диске, скажем, D с Python. Желательно использовать предустановленные библиотеки 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 голосов
/ 31 октября 2018

Как и при использовании ОС 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 (из-за глобуса)

0 голосов
/ 31 октября 2018

Вы можете использовать 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, если у вас нет прав доступа к определенному каталогу

0 голосов
/ 31 октября 2018

Это называется рекурсивным обходом каталога

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

Надеюсь, этот совет поможет вам.

Это линия, которая вас интересует.

print ((len (путь) - 1) * '---', os.path.basename (root))

Если вы хотите узнать больше, вы можете прочитать

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...