Python输出未按顺序重定向

时间:2019-12-26 17:59:31

标签: python-3.x formatting

我正在尝试格式化以下Python 3.x脚本的输出。这是我要调用的函数:

def daily_backup():
    # Header for /var/log/me/rsync_backup.log
    print(" ")
    print("#" * 75)
    print(get_dt())
    print("#" * 75)
    print(" ")

    # Update timestamp on backup file, notify user that backup has started
    Path("/var/log/me/rsync_backup_ran").touch()
    notify_send("Daily backup started","%s" % get_dt(),"info")

    # Every week, start over with current files
    if today_name != "Sunday":
        rsync_command = "rsync -avbH --stats --exclude-from=/home/me/bin/rsync_backup.ecl"
    else:
        rsync_command = "rsync -avH --stats --exclude-from=/home/me/bin/rsync_backup.ecl " \
                        "--delete --delete-excluded"


    # System configs, crontabs, installed software lists
    INSTALLED = "/home/me/.config/installed"
    if not os.path.isdir(INSTALLED):
        os.mkdir(INSTALLED)
    os.system("dpkg --get-selections > %s/installed-software" % INSTALLED)
    os.system("ls /home/me/.local/share/flatpak/app > %s/installed-flatpaks" % INSTALLED)
    os.system("rsync -avb /etc/apt/sources.list.d %s" % INSTALLED)
    os.system("rsync -avb /var/spool/cron %s" % INSTALLED)
    os.system("rsync -avb /etc/libvirt/qemu %s" % INSTALLED)

    # My data
    for i in range(3):
        cmd_format = "%s %s %s/%s/daily"
        cmd_info = (rsync_command, backup_paths[i], backup_root, backup_folders[i])
        os.system(cmd_format % cmd_info)

    notify_send("Daily backup ended","%s" % get_dt(),"info")

daily_backup()

该脚本有效,除了我创建的标头(在函数顶部)直到所有os.system调用之后才打印出来。这是正常行为吗?我该如何纠正?

1 个答案:

答案 0 :(得分:1)

stdout可能有问题。 尝试强制执行此SO previous post