Python, скопировать файл с созданием - PullRequest
0 голосов
/ 18 февраля 2019

Я пишу скрипт на Python для копирования конфигурации cron.Мне нужно скопировать мой файл в /etc/cron.d/, и если целевой файл не существует, он должен быть создан.Я нашел решение, но оно не предоставляет отсутствующий файл, вот оно:

from shutil import copyfile


def index():
    src = "/opt/stat/stat_cron"
    dst = "/etc/cron.d/stat_cron"
    copyfile(src, dst)


if __name__ == "__main__":
    index()

Я получаю исключение "FileNotFoundError: [Errno 2] No such file or directory: '/etc/cron.d/stat_cron'"

Пожалуйста, скажите мне правильное решение.

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

с помощью os.makedirs может помочь проверить условие, если файл существует, и создать его, если нет

from shutil import copyfile
import os

def index():
    src = "/opt/stat/stat_cron"
    dst = "/etc/cron.d/stat_cron"
    os.makedirs(dst,exit_ok=True)
    copyfile(src, dst)


if __name__ == "__main__":
    index()
0 голосов
/ 18 февраля 2019

всем спасибо.Успешно решен вопрос со следующими кодировками:

out_file_exists = os.path.isfile(dst)
out_dir_exists = os.path.isdir("/etc/cron.d")

if out_dir_exists is False:
    os.mkdir("/etc/cron.d")

if out_file_exists is False:
    open(dst, "a").close()
0 голосов
/ 18 февраля 2019
from pathlib import Path

def index():
    src = "/opt/stat/stat_cron"
    dst = "/etc/cron.d/stat_cron"
    my_file = Path(dst)
    try:
        copyfile(src, dest)
    except IOError as e:
        my_file.touch()       #create file
        copyfile(src, dst)

Используйте pathlib, чтобы проверить, существует ли файл, и создайте файл, если нет.

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